Truy vấn dữ liệu trong mongodb compass

truy cập trang web chính thức của MongoDB. Chuyển đến trang tải xuống và chọn phiên bản, nền tảng và loại tệp sẽ tải xuống như trong hình. Điều này sẽ trực tiếp tải tệp xuống thư mục tải xuống của hệ thống của bạn

find(): Trong MongoDB, không có tập ngôn ngữ truy vấn cơ sở dữ liệu như trong SQL. Thay vì dùng câu lệnh SELECT như trong SQL, với MongoDB ta dùng method find() với các tham số cần truy vấn.

Truy vấn dữ liệu trong MongoDB find(), findOne()

Cú pháp:

Để truy vấn, query dữ liệu trong MongoDB ta dùng method

db.COLLECTION_NAME.find().pretty()
0:

db.COLLECTION_NAME.find()

Nếu không truyền tham số nào vào trong method find() thì nó sẽ lấy ra tất cả các document bên trong collection.

Ví dụ lấy ra tất cả các document trong collection

db.COLLECTION_NAME.find().pretty()
1 của database
db.COLLECTION_NAME.find().pretty()
2:

Truy vấn dữ liệu trong mongodb compass

(Xem lại: insert document vào database)

Nếu bạn chỉ muốn lấy một document / bản ghi duy nhất thì thay method

db.COLLECTION_NAME.find().pretty()
0 bằng method
db.COLLECTION_NAME.find().pretty()
4

Truy vấn dữ liệu trong mongodb compass

Định dạng dữ liệu kết quả pretty()

Nếu bạn muốn hiển thị kết quả dưới dạng json format thì dùng thêm lệnh

db.COLLECTION_NAME.find().pretty()
5 ở phía sau lệnh
db.COLLECTION_NAME.find().pretty()
0

db.COLLECTION_NAME.find().pretty()

Ví dụ:

Truy vấn dữ liệu trong mongodb compass

Truy vấn theo điều hiện, mệnh đề WHERE trong MongoDB

Dữ liệu trong MongoDB không phải là dữ liệu quan hệ nên các điều kiện truy vấn của nó đơn giản hơn nhiều.

Dưới đây là một số phương thức truy vấn data/ document trong MongoDB:

Điều kiệnCú phápVí dụSQL tương ứngSo sánh bằng{:}db.customer.find({“name”:”kai”})where name= ‘kai’So sánh like{:}db.customer.find({“name”:/a/})where name like ‘%kai%’So sánh nhỏ hơn{:{$lt:}}db.customer.find({“age”:{$lt:50}})where age < 50So sánh nhỏ hơn hoặc bằng{:{$lte:}}db.customer.find({“age”:{$lte:50}})where age <= 50So sánh lớn hơn{:{$gt:}}db.customer.find({“age”:{$gt:50}})where age > 50So sánh lớn hơn hoặc bằng{:{$gte:}}db.customer.find({“age”:{$gte:50}})where age >= 50So sánh khác{:{$ne:}}db.customer.find({“age”:{$ne:50}})where age != 50

Ví dụ tìm tất cả các document trong collection customer có name bắt đầu bằng ‘ka’

db.customer.find({"name":/^ka/})

Ví dụ tìm tất cả các document trong collection customer có name kết bằng ‘pe’

db.customer.find({"name":/pe$/})

Sử dụng kết hợp AND, OR trong điều kiện truy vấn

Để truy vấn theo nhiều điều kiện cùng lúc

db.COLLECTION_NAME.find().pretty()
7 ta dùng cú pháp sau:
db.COLLECTION_NAME.find().pretty()
8 đi kèm với mảng các điều kiên

{$and: [{key1: value1}, {key2:value2}]}

Tương tự với OR ta dùng cú pháp sau:

db.COLLECTION_NAME.find().pretty()
9 đi kèm với mảng các điều kiên

{$or: [{key1: value1}, {key2:value2}]}

Ví dụ tìm document có name = ‘kai’ và địa chỉ có chứa ‘na’:

db.customer.find({$and: [{"name": "kai"}, {"address":/na/}]})

* Lưu ý: khi dùng and hoặc or, nếu muốn kiểm tra nhiều điều kiện trên cùng một field/column thì ta gôp chung nó vào thành một mệnh đề:

Ví dụ: muốn tìm tất cả các document trong collection

db.COLLECTION_NAME.find().pretty()
1 có age > 10 và age < 30 thì câu lệnh của ta như sau:

Ở 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

db.admin.find()
3 với cú pháp:

db.collectionName.find()

Trong đó:

db.admin.find()
4 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()

Truy vấn dữ liệu trong mongodb compass

Hình minh họa

-Dựa vào chức năng của hàm

db.admin.find()
3 thì chúng ta có thể so sánh nó tương đương như câu lệnh
db.admin.find()
6 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()

Truy vấn dữ liệu trong mongodb compass

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 đó:

  • db.admin.find()
    4 là tên của collection mà các bạn muốn truy vấn.
  • db.admin.find()
    8 là object chứa mệnh đề điều kiện. Theo các cú pháp sau đây:

Phép ToánCú PhápVí dụCâu lệnh tương ứng trong SQLBằ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 < 18Nhỏ hơn bằng (Less Than Equals){key: {$lte: value}}db.admin.find({age: { $lte: 18}).pretty()... WHERE age <= 18Lơn hơn (Greater Than){key: {$gt: value}}db.admin.find({age: { $gt: 12}).pretty()... WHERE age > 12Lớn hơn bằng (Greater Than Equals){key: {$gte: value}}db.admin.find({age: { $gte: 12}).pretty()... WHERE age >= 12Khác (Not Equals){key: {$ne: value}}db.admin.find({age: { $ne: 12}).pretty()... WHERE age != 12Trong ( 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()

Truy vấn dữ liệu trong mongodb compass

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
})

Truy vấn dữ liệu trong mongodb compass

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à

db.admin.find()
9 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()

Truy vấn dữ liệu trong mongodb compass

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()

Truy vấn dữ liệu trong mongodb compass

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.admin.find()
0

Trong đó:

  • db.collectionName.find().pretty()
    0 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.
  • db.collectionName.find().pretty()
    1 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
    db.collectionName.find().pretty()
    2 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()
1

Truy vấn dữ liệu trong mongodb compass

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()
2

Truy vấn dữ liệu trong mongodb compass

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.