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

MongoDB-এ এম্বেডেড ডকুমেন্টের ফিল্ডে কোয়েরি করা

MongoDB-এ এম্বেডেড ডকুমেন্ট (নেস্টেড অবজেক্ট) এর ফিল্ডে কোয়েরি করতে ডট (.) নোটেশন ব্যবহার করা হয়।

নমুনা ডেটা তৈরি (CustomerDetails অ্যারে অবজেক্ট)

> db.embeddedDocumentDemo.insertOne({
  "CustomerDetails": [
    {"CustomerName": "Chris", "CustomerPurchasePrice": 3000},
    {"CustomerName": "Robert", "CustomerPurchasePrice": 4500},
    {"CustomerName": "David", "CustomerPurchasePrice": 1000}
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd32347edc6604c74817ccd") }

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

> db.embeddedDocumentDemo.find().pretty();
আউটপুট:
{
  "_id": ObjectId("5cd32347edc6604c74817ccd"),
  "CustomerDetails": [
    {"CustomerName": "Chris", "CustomerPurchasePrice": 3000},
    {"CustomerName": "Robert", "CustomerPurchasePrice": 4500},
    {"CustomerName": "David", "CustomerPurchasePrice": 1000}
  ]
}

CustomerPurchasePrice = 4500 থাকা ডকুমেন্ট খোঁজা

> db.embeddedDocumentDemo.find({"CustomerDetails.CustomerPurchasePrice": 4500});
আউটপুট (পুরো ডকুমেন্ট রিটার্ন হয়, শুধু মেলে অ্যারে এলিমেন্ট নয়):
{
  "_id": ObjectId("5cd32347edc6604c74817ccd"),
  "CustomerDetails": [
    {"CustomerName": "Chris", "CustomerPurchasePrice": 3000},
    {"CustomerName": "Robert", "CustomerPurchasePrice": 4500},
    {"CustomerName": "David", "CustomerPurchasePrice": 1000}
  ]
}

গুরুত্বপূর্ণ: find() পুরো ডকুমেন্ট রিটার্ন করে। শুধু মেলে সাব-ডকুমেন্ট পাওয়ার জন্য $elemMatch বা অ্যাগ্রিগেশন ($unwind, $match) ব্যবহার করুন।

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

  2. MongoDB-তে নেস্টেড ডকুমেন্ট খোঁজা (Dot Notation)

  3. MongoDB-তে নেস্টেড ডকুমেন্ট আপডেট করা (ডট নোটেশন + পজিশনাল $)

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