দুই অ্যারে একসাথে আনউইন্ড করতে $unwind সাথে includeArrayIndex ব্যবহার করুন। $unwind অ্যারে ফিল্ডকে ডিকম্পোজ করে প্রতিটি এলিমেন্টের জন্য আলাদা ডকুমেন্ট তৈরি করে। একটি কালেকশন তৈরি করুন:
> db.demo515.insertOne({
"details1": [ "4700100004" ],
"details2": [ "Not Given" ],
"Value1": [ "56", "45", "35" ],
"Value2": [ "35", "45", "56" ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e889e51987b6e0e9d18f590") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo515.find();
আউটপুট:
দুই অ্যারে (
Value1এবংValue2) একসাথে আনউইন্ড করে একই ইন্ডেক্সের এলিমেন্টগুলো পেয়ার করার কোয়ারি:> db.demo515.aggregate([ { $unwind: { path: "$Value1", includeArrayIndex : "index1" } }, { $unwind: { path: "$Value2", includeArrayIndex : "index2" } }, { $project: { _id : 1, details1: 1, details2: 1, Value1: 1, Value2: 1, valid: { $eq: ["$index1", "$index2"] } }}, { $match: { valid: true } } ]);আউটপুট:
ব্যাখ্যা:
includeArrayIndexপ্রতিটি আনউইন্ডেড এলিমেন্টের আসল ইন্ডেক্স সংরক্ষণ করে। دوবার$unwindকরলে কারtezিয়ান প্রোডাক্ট হয় (৩x৩=৯ ডকুমেন্ট)।$projectএবং$matchদিয়ে শুধু একই ইন্ডেক্সের পেয়ারগুলো (valid: true) ফিল্টার করা হয়েছে।