এজন্য MongoDB-তে aggregate() ব্যবহার করুন। ডকুমেন্টসহ একটি কলেকশন তৈরি করি:
> db.demo285.insertOne(
{
details : [
{ Name : "Chris" },
{ Name2: "Bob" },
{ Name: "Mike" }
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e4abffef49383b52759cbb9") }
find() মেথড দিয়ে সব ডকুমেন্ট দেখান:
> db.demo285.find();
আউটপুট:
{ "_id" : ObjectId("5e4abffef49383b52759cbb9"), "details" : [ { "Name" : "Chris" }, { "Name2" : "Bob" }, { "Name" : "Mike" } ] }
প্রজেকশনের দিয়ে দেয়া ফিল্ডসহ সাব-ডকুমেন্ট লিমিট করার কোয়েরি:
> db.demo285.aggregate(
[
{ $match: { 'details.Name' : { $exists: 1 } } },
{ $unwind: "$details" },
{ $match: { 'details.Name' : { $exists: 1 } } },
{ $project: { Name: "$details.Name", _id: 0 } }
]
)
ফলাফল (শুধু Name ফিল্ড থাকা সাব-ডকুমেন্টগুলো):
{ "Name" : "Chris" }
{ "Name" : "Mike" }