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

MongoDB-তে এমবেডেড ডকুমেন্ট অ্যারে কোয়েরি করে নতুন এলিমেন্ট যোগ করা ($push + $nin)

MongoDB-তে অ্যারে ভিতরে ডুপ্লিকেট বাদে নতুন এলিমেন্ট যোগ করতে $nin (Not In) দিয়ে চেক করে $push দিয়ে অ্যাপেন্ড করা হয়। এটি "আপসার্ট-লাইক" আপডেট নিশ্চিত করে।

উদাহরণ: সার্চ ইনফরমেশন অ্যারে

> db.demo573.insertOne({
    '_id': 101,
    'SearchInformation': [
        { 'Site': 'Facebook.com', 'NumberOfHits': 100 },
        { 'Site': 'Twitter.com', 'NumberOfHits': 300 }
    ]
});

"Google.com" না থাকলে যোগ করা

> db.demo573.update(
    { _id: 101, "SearchInformation.Site": { $nin: ["Google.com"] } },
    { $push: { "SearchInformation": { 'Site': 'Google.com', 'NumberOfHits': 10000 } } }
);

রেজাল্ট: WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ফলাফল

> db.demo573.find().pretty();

আউটপুট: অ্যারেতে তিনটি সাইট (Facebook, Twitter, Google) দেখাবে।

কীভাবে কাজ করে:

  • $nin: ["Google.com"] - যদি অ্যারেতে "Google.com" না থাকে, তবে ডকুমেন্ট ম্যাচ করবে
  • $push - ম্যাচ হলে নতুন অবজেক্ট অ্যারের শেষে যোগ করবে
  • যদি "Google.com" আগে থেকে থাকে, তবে nMatched: 0 হবে, কিছুই আপডেট হবে না

এটি অ্যারের ইউনিকনেস মেইনটেইন করার সহজ পদ্ধতি।

  1. MongoDB-তে এমবেডেড ডকুমেন্ট কোয়েরি করা (aggregate + $unwind)

  2. MongoDB-তে অ্যারে এলিমেন্টের সংখ্যা গুনে নতুন ফিল্ডে দেখানো ($size)

  3. MongoDB-তে $elemMatch এবং $and দিয়ে অ্যারে ফিল্ডে একাধিক শর্ত মিলিয়ে ডকুমেন্ট বের করা

  4. MongoDB-এ এমবেডেড ডকুমেন্টের অ্যারে ফিল্টার করা (৩ লেভেল)