কম্পিউটার টিউটোরিয়াল

MongoDB Aggregation-এ দুটি অ্যারে $unwind করা

দুইটি অ্যারে ফিল্ডকে $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 ৩টি জোড়া ফিল্টার করা হয়েছে।

  1. MongoDB-তে সাবডকুমেন্টের অ্যারে কুয়েরি

  2. MongoDB-এ দুটি অ্যারে একসাথে আনউইন্ড করা

  3. MongoDB-এ _id দিয়ে গ্রুপ করে ডকুমেন্ট কাউন্ট করা

  4. MongoDB-এ কালেকশন রিনেম করা (renameCollection)