দুইটি অ্যারে ফিল্ডকে $unwind করে এলিমেন্ট-ওয়াইজ মিলানো
MongoDB Aggregation-এ একাধিক অ্যারে ফিল্ড থাকলে তাদের আলাদা আলাদা $unwind করে'Elaboration: $unwind অপারেটর অ্যারে ফিল্ডকে ডিকনস্ট্রাক্ট করে প্রতিটি এলিমেন্টের জন্য আলাদা ডকুমেন্ট তৈরি করে। দুটি অ্যারে unwind করলে কার্টেসিয়ান প্রোডাক্ট (Cartesian product) তৈরি হয়।
নমুনা সংগ্রহ তৈরি (দুটি অ্যারে)
> db.demo387.insertOne(
{
"Name" : "101",
"Details1" : [
{Value:100, Value1:50, Value2:40},
{Value:200},
{Value:300}
],
"Details" : [
{Value:100, Value1:30, Value2:26},
{Value:200},
{Value:300}
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e5d197022064be7ab44e7f8") }
ডকুমেন্ট দেখানো
> db.demo387.find().pretty();
আউটপুট:
দুই অ্যারে unwind করে Value মিলানো
> db.demo387.aggregate([ { "$unwind": "$Details1" }, { "$unwind": "$Details" }, { "$match": { "$expr": { "$eq": ["$Details1.Value", "$Details.Value"] } } } ])ফলাফল (Value মিলে যাওয়া ৩টি জোড়া):
ব্যাখ্যা: প্রথম Details1 unwind, পরে Details unwind করলে ৩x৩=৯টি ডকুমেন্ট বানেছে। $match দিয়ে Details1.Value এবং Details.Value সমান olan ৩টি জোড়া ফিল্টার করা হয়েছে।