MongoDB tốt hơn khi bạn đang truy vấn các phần tử mảng. Hãy để chúng tôi sử dụng cú pháp sau để truy vấn các phần tử mảng -
db.yourCollectionName.find({yourArrayFieldName:"yourValue"}).pretty();
Cú pháp trên sẽ trả về tất cả các tài liệu có giá trị “yourValue” trong một trường mảng.
Để hiểu khái niệm, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -
> db.queryArrayElementsDemo.insertOne({ ... "StudentName":"John","StudentFavouriteSubject":["C","Java"]}); { "acknowledged" : true, "insertedId" : ObjectId("5c90c0354afe5c1d2279d694") } > db.queryArrayElementsDemo.insertOne({ "StudentName":"Carol","StudentFavouriteSubject":["C","C++"]}); { "acknowledged" : true, "insertedId" : ObjectId("5c90c0434afe5c1d2279d695") } > db.queryArrayElementsDemo.insertOne({ "StudentName":"David","StudentFavouriteSubject":["MongoDB","Java"]}); { "acknowledged" : true, "insertedId" : ObjectId("5c90c0584afe5c1d2279d696") }
Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau -
> db.queryArrayElementsDemo.find().pretty();
Sau đây là kết quả -
{ "_id" : ObjectId("5c90c0354afe5c1d2279d694"), "StudentName" : "John", "StudentFavouriteSubject" : [ "C", "Java" ] } { "_id" : ObjectId("5c90c0434afe5c1d2279d695"), "StudentName" : "Carol", "StudentFavouriteSubject" : [ "C", "C++" ] } { "_id" : ObjectId("5c90c0584afe5c1d2279d696"), "StudentName" : "David", "StudentFavouriteSubject" : [ "MongoDB", "Java" ] }
Truy vấn các phần tử mảng với MongoDB -
> db.queryArrayElementsDemo.find({StudentFavouriteSubject:"Java"}).pretty();
Sau đây là kết quả -
{ "_id" : ObjectId("5c90c0354afe5c1d2279d694"), "StudentName" : "John", "StudentFavouriteSubject" : [ "C", "Java" ] } { "_id" : ObjectId("5c90c0584afe5c1d2279d696"), "StudentName" : "David", "StudentFavouriteSubject" : [ "MongoDB", "Java" ] }
Nhìn vào kết quả đầu ra mẫu ở trên, truy vấn trên trả về tất cả các tài liệu đó với giá trị “Java”.