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

MongoDB কোয়ারী: আইডি যদি ডকুমেন্ট ফিল্ড অ্যারে মানের সমান হয় তবে বাদ দেওয়া

MongoDB-এ যদি কোনো ডকুমেন্টের id ফিল্ডের মান তার নিজস্ব subjectid অ্যারেতে থাকে, তবে সেই ডকুমেন্ট বাদ দিতে $not এবং $in অপারেটর একসাথে ব্যবহার করা হয়।

নমুনা ডেটা

[
  {
    id: "101",
    subjectid: ["102"]
  },
  {
    id: "102",
    subjectid: ["102"]
  }
]

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

db.collection.find()

আউটপুট:

[
  { "_id": ObjectId("5a934e000102030405000000"), "id": "101", "subjectid": ["102"] },
  { "_id": ObjectId("5a934e000102030405000001"), "id": "102", "subjectid": ["102"] }
]

বর্জন করার কোয়ারী

$expr এক্সপ্রেশনে $not এবং $in ব্যবহার করে যেসব ডকুমেন্টের id তার subjectid অ্যারেতে নেই, শুধু সেগুলো ফেচ করা হয়েছে:

db.collection.find({
  $expr: {
    $not: {
      $in: [
        "$id",
        "$subjectid"
      ]
    }
  }
})

ফলাফল

[
  { "_id": ObjectId("5a934e000102030405000000"), "id": "101", "subjectid": ["102"] }
]

ব্যাখ্যা:

  • প্রথম ডকুমেন্ট: id: "101" অ্যারে ["102"]-এ নেই → রিটার্ন হয়েছে
  • দ্বিতীয় ডকুমেন্ট: id: "102" অ্যারে ["102"]-এ আছে → বাদ পড়েছে

ব্যবহার ক্ষেত্র: এটি সেলফ-রেফারেন্স বা সাইক্লিক রেফারেন্স পরীক্ষা করার জন্য উপযোগী।

  1. MongoDB Aggregation-এ নির্দিষ্ট ফিল্ড মান মэтচ করা ($match স্টেজ)

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

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

  4. MongoDB-এ অ্যারে কোয়েরি করে নির্দিষ্ট ভ্যালু ফেচ করা