MongoDB-এ নেস্টেড অ্যারে থেকে নির্দিষ্ট ফিল্ডের মানগুলো একত্রিত করে একটি ফ্ল্যাট অ্যারে বের করতে এগ্রিগেশন ফ্রেমওয়ার্ক ($unwind, $group, $push) ব্যবহার করুন।
উদাহরণ
নেস্টেড অ্যারে স্ট্রাকচার সহ ডকুমেন্ট তৈরি করুন:
> db.getArrayDemo.insertOne({
"CustomerId": 101,
"CustomerDetails": [
{
"CustomerName": "Larry",
"CustomerFriendDetails": [
{"CustomerFriendName": "Sam"},
{"CustomerFriendName": "Robert"}
]
},
{
"CustomerName": "Chris",
"CustomerFriendDetails": [
{"CustomerFriendName": "David"},
{"CustomerFriendName": "Carol"}
]
}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cda4949b50a6c6dd317adb7") }
ডকুমেন্টটি দেখুন:
> db.getArrayDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cda4949b50a6c6dd317adb7"), "CustomerId" : 101, "CustomerDetails" : [ { "CustomerName" : "Larry", "CustomerFriendDetails" : [ { "CustomerFriendName" : "Sam" }, { "CustomerFriendName" : "Robert" } ] }, { "CustomerName" : "Chris", "CustomerFriendDetails" : [ { "CustomerFriendName" : "David" }, { "CustomerFriendName" : "Carol" } ] } ] }
এগ্রিগেশন পাইপলাইন ব্যবহার করে সব বন্ধুর নাম একটি অ্যারেতে আনা
> db.getArrayDemo.aggregate([
{ "$unwind": "$CustomerDetails" },
{ "$unwind": "$CustomerDetails.CustomerFriendDetails" },
{
"$group": {
"_id": null,
"CustomerFriendDetails": { "$push": "$CustomerDetails.CustomerFriendDetails.CustomerFriendName" }
}
}
]);
আউটপুট:
{ "_id" : null, "CustomerFriendDetails" : [ "Sam", "Robert", "David", "Carol" ] }
ব্যাখ্যা:
$unwind: "$CustomerDetails"— বাহ্যিক অ্যারেটি ফ্ল্যাট করে।$unwind: "$CustomerDetails.CustomerFriendDetails"— নেস্টেড অ্যারেটি ফ্ল্যাট করে।$groupসহ$push— সবCustomerFriendNameএকটি অ্যারেতে জমা করে।