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

MongoDB-এ পজিশনাল অপারেটর ($) দিয়ে অ্যারে অবজেক্ট থেকে নির্দিষ্ট এলিমেন্ট প্রজেক্ট করা

MongoDB-এ অ্যারে অবজেক্টের মধ্যে নির্দিষ্ট শর্ত মэтช করা এলিমেন্ট মাত্র প্রজেক্ট (রিটার্ন) করতে পজিশনাল $ অপারেটর ব্যবহার করা হয়।

নমুনা ডেটা তৈরি (CustomerPurchaseDescription অ্যারে)

> db.getASpecificObjectDemo.insertOne({
  _id: 1,
  "CustomerName": "Larry",
  "CustomerDetails": {
    "CustomerPurchaseDescription": [
      {"id": 100, "ProductName": "Product-1", "Amount": 10000},
      {"id": 101, "ProductName": "Product-2", "Amount": 10500},
      {"id": 102, "ProductName": "Product-3", "Amount": 10200}
    ]
  }
});
{ "acknowledged": true, "insertedId": 1 }

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

> db.getASpecificObjectDemo.find().pretty();
আউটপুট:
{
  "_id": 1,
  "CustomerName": "Larry",
  "CustomerDetails": {
    "CustomerPurchaseDescription": [
      {"id": 100, "ProductName": "Product-1", "Amount": 10000},
      {"id": 101, "ProductName": "Product-2", "Amount": 10500},
      {"id": 102, "ProductName": "Product-3", "Amount": 10200}
    ]
  }
}

id = 101 থাকা এলিমেন্ট মাত্র প্রজেক্ট করা (পজিশনাল $)

> db.getASpecificObjectDemo.find(
  {_id: 1, "CustomerDetails.CustomerPurchaseDescription.id": 101},
  {_id: 0, "CustomerDetails.CustomerPurchaseDescription.$": 1}
);
আউটপুট (শুধু id 101 वाला এলিমেন্ট):
{
  "CustomerDetails": {
    "CustomerPurchaseDescription": [
      {"id": 101, "ProductName": "Product-2", "Amount": 10500}
    ]
  }
}

ব্যাখ্যা: কোয়েরিতে "CustomerDetails.CustomerPurchaseDescription.id": 101 দিয়ে কোন এলিমেন্ট মэтচ করল সেটি পজিশনাল $ দিয়ে প্রজেকশনে রিটার্ন করা হয়েছে। _id: 0 দিয়ে _id বাদ দেওয়া হয়েছে।

  1. MongoDB-এ ডকুমেন্ট থেকে অ্যারে ভ্যালু ডিলিট করা

  2. MongoDB-এ ডকুমেন্টের ভেতরের অ্যারেতে অবজেক্ট আপডেট করা (Positional $ অপারেটর)

  3. MongoDB অ্যাগ্রিগেশন: নেস্টেড অ্যারে এলিমেন্টের গড় (Average) বের করা ($avg + $unwind)

  4. MongoDB ডকুমেন্টের নির্দিষ্ট ফিল্ড থেকে অ্যারে এলিমেন্ট কাউন্ট করা