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

MongoDB অবজেক্ট অ্যারেতে বিভিন্ন অবজেক্টের অ্যাট্রিবিউট তুলনা করা

MongoDB-এ অ্যারে অবজেক্টের মধ্যে অ্যাট্রিবিউট তুলনা

একই ডকুমেন্টের অ্যারেতে থাকা বিভিন্ন অবজেক্টের ফিল্ড মান তুলনা করার জন্য অগ্রেশন পাইপলাইনে $expr, $let, $indexOfArray এবং $arrayElemAt ব্যবহার করা হয়।

উদাহরণ: নেস্টেড ডিটেইলস সহ ডকুমেন্ট তৈরি

> db.demo366.insertOne({ "Name" : "Chris", "details" : [ { "Id" : "John1", "value" : "test" }, { "Id" : "John2", "value" : 18 }, { "Id" : "John3", "value" : 20 } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e57ddd92ae06a1609a00ae7") }

ডকুমেন্ট দেখানো

> db.demo366.find();
{ "_id" : ObjectId("5e57ddd92ae06a1609a00ae7"), "Name" : "Chris", "details" : [ { "Id" : "John1", "value" : "test" }, { "Id" : "John2", "value" : 18 }, { "Id" : "John3", "value" : 20 } ] }

তুলনা কুয়েরি: John2.value < John3.value কিনা চেক করা

> db.demo366.find({
    "$expr":{
        "$let":{
            "vars":{
                "john2":{"$arrayElemAt":["$details",{"$indexOfArray":["$details.Id","John2"]}]},
                "john3":{"$arrayElemAt":["$details",{"$indexOfArray":["$details.Id","John3"]}]}
            },
            "in":{"$lt":["$$john2.value","$$john3.value"]}
        }
    }
})

ফলাফল

{ "_id" : ObjectId("5e57ddd92ae06a1609a00ae7"), "Name" : "Chris", "details" : [ { "Id" : "John1", "value" : "test" }, { "Id" : "John2", "value" : 18 }, { "Id" : "John3", "value" : 20 } ] }

পাইপলাইন ব্যাখ্যা

  1. $indexOfArray: details.Id অ্যারেতে "John2" এবং "John3" এর ইনডেক্স বের করে।
  2. $arrayElemAt: সেই ইনডেক্সের এলিমেন্ট (পুরো অবজেক্ট) বের করে।
  3. $let: ভেরিয়েবল john2 এবং john3 ডিক্লেয়ার করে।
  4. $lt: $$john2.value (১৮) < $$john3.value (২০) কিনা চেক করে।

সীমাবদ্ধতা: এই পদ্ধতিটি জটিল এবং ধীর। ডিজাইন পর্যায়ে সম্ভব হলে ডেটা স্ট্রাকচার পরিবর্তন করে কাজ করা ভালো।

  1. MongoDB-তে অ্যাট্রিবিউট কপি করার পদ্ধতি

  2. MongoDB-এ অ্যারেতে এলিমেন্ট যুক্ত করার পদ্ধতি

  3. MongoDB-এ অবজেক্টের ভেতরের অ্যারেতে নতুন আইটেম যোগ করা

  4. MongoDB-এ অবজেক্ট অ্যারে থেকে নির্দিষ্ট আইটেম বের করা