DANH MỤC: MongoDB

Bài 8: Truy vấn dữ liệu trong MongoDB


Ở bài trước mình đã giới thiệu với mọi người các cách insert dữ liệu vào trong MongoDB rồi, bài này chúng ta tiếp tục tìm hiểu về cách truy vấn dữ liệu trong MongoDB.

1, Lấy tất cả dữ liệu trong Collection.

-Để lấy tất cả dữ liệu ở trong collection chúng ta sử dụng phương thức find() với cú pháp:

db.collectionName.find()

Trong đó: collectionName là tên của collection mà các bạn muốn truy vấn.

-Tuy nhiên, khi chỉ sử dụng mỗi phương thức find thì dữ liệu trả về sẽ dưới dạng object nhưng không theo một cấu trúc nào cả.

VD: Lấy tất cả dữ liệu đang có trong Collection admin.

db.admin.find()

find trong mongodb

Hình minh họa

-Dựa vào chức năng của hàm find() thì chúng ta có thể so sánh nó tương đương như câu lệnh Select * from trong SQL.

-Và nếu như bạn muốn dữ liệu được trả về được hiển thị theo cấu trúc đã được định sẵn thì chỉ cần thêm hàm pretty() vào phía sau hàm find().

Cú Pháp:

db.collectionName.find().pretty()

VD: Lấy hết dữ liệu trong collection admin.

db.admin.find().pretty()

pretty trong MongoDB

Hình minh họa

2, Truy vấn có điều kiện trong MongoDB.

-Để truy vấn có điều kiện trong MongoDB thì bạn cũng sử dụng cú pháp tương tự như phần 1, nhưng lúc này chúng ta sẽ chèn thêm điều kiện vào trong hàm find() với cú pháp sau:

db.collection.find(condition)

Trong đó:

  • collectionName là tên của collection mà các bạn muốn truy vấn.
  • condition là object chứa mệnh đề điều kiện. Theo các cú pháp sau đây:
Phép Toán Cú Pháp Ví dụ Câu lệnh tương ứng trong SQL
Bằng (Equality) {key: value} db.admin.find({name: "Vu Thanh Tai" }).pretty() .. WHERE name = "Vu Thanh Tai"
Nhỏ hơn (Less Than ) {key: {$lt: value}} db.admin.find({age: { $lt: 18}).pretty() ... WHERE age < 18
Nhỏ hơn bằng (Less Than Equals) {key: {$lte: value}} db.admin.find({age: { $lte: 18}).pretty() ... WHERE age <= 18
Lơn hơn (Greater Than) {key: {$gt: value}} db.admin.find({age: { $gt: 12}).pretty() ... WHERE age > 12
Lớn hơn bằng (Greater Than Equals) {key: {$gte: value}} db.admin.find({age: { $gte: 12}).pretty() ... WHERE age >= 12
Khác (Not Equals) {key: {$ne: value}} db.admin.find({age: { $ne: 12}).pretty() ... WHERE age != 12
Trong ( In) {key: {$in: [value1, value2,..]}} db.admin.find({age: { $in: [12, 18]}).pretty() ... WHERE age IN (12, 18)
Không Thuộc (Not In) {key: {$nin: [value1, value2,..]}} db.admin.find({age: { $nin: [12, 18]}).pretty() ... WHERE age NOT IN (12, 18)

VD: in ra tất cả các admin có tên là Vu Thanh Tai có trong colletion admin.

db.collection.find({name: "Vu Thanh Tai"}).pretty()

Equlas find trong MongoDB

Hình minh họa

3, Truy vấn nhiều điều kiện trong MongoDB.

-Trong MongoDB cũng có hỗ trợ chúng ta truy vấn nhiều điều kiện trên một lần khai báo, với các toán tử AND,OR Như trong SQL.

AND

-Để thực hiện phép toán này thì các bạn chỉ cần thêm các điều kiện cảu câu truy vấn vào trong object chứa điều kiện bind vào trong phương thức find.

VD: Lấy ra admin có tên Vũ Thanh Tài và có tuổi là 18 trong collection admin.

db.admin.find({
    name: "Vu Thanh Tai",
    age: 18
})

Where and trong MongoDB

Hình minh họa

-Tương tự, nếu như bạn muốn and bao nhiêu điều kiện thì thêm bấy nhiêu vào trong object.

OR

-Để sử dụng mệnh đề or (hoặc) trong MongoDB thì chúng ta cần phải truyền một key scope có tên là $or vào làm key chứa mảng các điều kiện hoặc, theo cú pháp:

db.collectionName.find({
    $or : [
        {key1: value1},
        {key2: value2},
        ...,
        {keyn: valuen}
    ]
}).pretty()

VD: Lấy ra tất cả các admin có tuổi bằng 12 hoặc name là Vu Thanh Tai trong collection admin

db.admin.find({
    $or : [
        {age: 12},
        {name: "Vu Thanh Tai"},
    ]
}).pretty()

where or trong MongoDB

Hình minh họa

Kết hợp cả AND và OR.

-Để kết hợp giữa AND và OR thì bạn chỉ cần làm tương tự như cách thực hiện truy vấn AND, và nếu truy vấn nào là or thì object đó lại làm tương tự như truy vấn OR.

VD: Lấy ra tất cả các admin có tuổi bằng 12 hoặc password bằng admin và có name là Vu Thanh Tai  trong collection admin.

db.admin.find({
    $or : [
        {age: 12},
        {password: "admin"},
    ],
    name: "Vu Thanh Tai"
}).pretty()

Where and or trong mongoDB

Hình minh họa

4, Chọn lọc các trường cần lấy ra trong MongoDB.

-Để chọn lọc các trường cần hiển thị ra trong 1 collection thì các bạn sử dụng phương thức find() với cú pháp sau:

db.collectionName.find(objectwhere,objectselect)

Trong đó:

  • objectwhere là object chứa các điều kiện ở các phần trên. Nếu bạn không muốn lọc theo điều kiện thì bạn để một object rỗng vào.
  • objectselect là obejct chứa các trường dữ liệu cần lấy ra. Mặc định thì nó sẽ lấy cả _id, nên nếu như bạn không muốn hiển thị _id thì bạn cần thêm _id: 0 vào object.

VD: Lấy ra trường _id, name, password của tất cả các document có trong collection admin.

db.admin.find({},{name: 1,password: 1}).pretty()

find select trong MongoDB

hình minh họa

VD: Lấy ra name,password của những bản ghi có name = Vu Thanh Tai có trong admin collection.

db.admin.find({name: "Vu Thanh Tai"},{name: 1, password: 1, _id: 0}).pretty()

find select trong mongodb

hình minh họa

5, Lời kết.

-Như vậy phần này mình đã giới thiệu đến mọi người các câu lệnh lấy ra dữ liệu trong Collection cơ bản rồi. Bài tiếp theo chúng ta sẽ tìm hiểu về cách sắp sếp và giới hạn số lượng bản ghi được lấy ra trong Colletion.

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

The best way to learn is to share

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia