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

MongoDB-এ অ্যারে অর্ডার বাদ দিয়ে ম্যাচিং ডকুমেন্ট খুঁজে বের করা

MongoDB-এ $all অপারেটর ব্যবহার করে অর্ডার-ইনডিপেন্ডেন্ট অ্যারে ম্যাচিং

$all অপারেটর অ্যারে ফিল্ডে নির্দিষ্ট সব এলিমেন্ট আছে কিনা চেক করে, অর্ডার বা পজিশন বিবেচনা করে না। এটি নেস্টেড অবজেক্ট অ্যারেতেও কাজ করে।

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

> db.demo370.insertOne({ "Name" : "Chris", "details" : [ { "Subject" : "MySQL", "CountryName" : "US" }, { "Subject" : "MongoDB", "CountryName" : "UK" } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e9892ae06a1609a00af0") }
> db.demo370.insertOne({ "Name" : "David", "details" : [ { "Subject" : "Java", "CountryName" : "AUS" }, { "Subject" : "Spring", "CountryName" : "UK" } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e57e9972ae06a1609a00af1") }

সমস্ত ডকুমেন্ট

> db.demo370.find();
{ "_id" : ObjectId("5e57e9892ae06a1609a00af0"), "Name" : "Chris", "details" : [ { "Subject" : "MySQL", "CountryName" : "US" }, { "Subject" : "MongoDB", "CountryName" : "UK" } ] }
{ "_id" : ObjectId("5e57e9972ae06a1609a00af1"), "Name" : "David", "details" : [ { "Subject" : "Java", "CountryName" : "AUS" }, { "Subject" : "Spring", "CountryName" : "UK" } ] }

$all ব্যবহার করে কুয়েরি: উভয় অবজেক্ট থাকা ডকুমেন্ট খুঁজে বের করা

> db.demo370.find({
    details: {$all: [
        {Subject:"MySQL","CountryName" : "US"},
        {Subject:"MongoDB", "CountryName" : "UK"}
    ]}
})

ফলাফল

{ "_id" : ObjectId("5e57e9892ae06a1609a00af0"), "Name" : "Chris", "details" : [ { "Subject" : "MySQL", "CountryName" : "US" }, { "Subject" : "MongoDB", "CountryName" : "UK" } ] }

ব্যাখ্যা

  • $all নিশ্চিত করে যে details অ্যারেতে উভয় অবজেক্টই আছে, অর্ডার নির্বিশেষে।
  • প্রথম ডকুমেন্টে উভয় অবজেক্ট আছে, তাই ম্যাচ করল।
  • দ্বিতীয় ডকুমেন্টে "MySQL"/"US" নেই, তাই বাদ পড়ল।

সাধারণ অ্যারে (স্ট্রিং/নাম্বার) উদাহরণ

db.collection.find({ tags: { $all: ["mongodb", "database", "nosql"] } })

এই কুেরি "mongodb", "database", "nosql" তিনটি ট্যাগ সব থাকা ডকুমেন্ট খুঁজে বের করবে।

  1. MongoDB-এ নির্দিষ্ট মানগুলোর সাথে ম্যাচ হওয়া ডকুমেন্ট খুঁজে বের করা

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

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

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