Để truy xuất nhiều mục trong một mảng, hãy sử dụng khung tổng hợp. Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -
> db.retrieveMultipleDemo.insertOne(
... {
... "UserDetails":
... [
... { "_id": "101", "UserName":"John", "UserAge": 23 },
... { "_id": "102", "UserName":"Carol", "UserAge": 21 },
... { "_id": "103", "UserName":"David", "UserAge": 23},
... { "_id": "104", "UserName":"Sam", "UserAge": 25}
... ]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd40c85edc6604c74817cf0")
} Sau đây là truy vấn để 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 () -
> db.retrieveMultipleDemo.find().pretty();
Điều này sẽ tạo ra kết quả sau -
{
"_id" : ObjectId("5cd40c85edc6604c74817cf0"),
"UserDetails" : [
{
"_id" : "101",
"UserName" : "John",
"UserAge" : 23
},
{
"_id" : "102",
"UserName" : "Carol",
"UserAge" : 21
},
{
"_id" : "103",
"UserName" : "David",
"UserAge" : 23
},
{
"_id" : "104",
"UserName" : "Sam",
"UserAge" : 25
}
]
} Sau đây là truy vấn để lấy nhiều mục trong một mảng -
> db.retrieveMultipleDemo.aggregate([
... {$unwind:"$UserDetails"},
... {$match:{"UserDetails._id":{$in:myIds},"UserDetails.UserAge":23}},
... {$group:{"_id":"_id","UserDetails":{$push:"$UserDetails"}}},
... {$project:{"_id":0,"UserDetails":1}}
... ]); Điều này sẽ tạo ra kết quả sau -
{ "UserDetails" : [ { "_id" : "101", "UserName" : "John", "UserAge" : 23 }, { "_id" : "103", "UserName" : "David", "UserAge" : 23 } ] }