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

MongoDB-এ সাব-অ্যারে থেকে ডকুমেন্ট খোঁজা (ডট নোটেশন)

MongoDB-এ নেস্টেড অ্যারে অবজেক্টের ফিল্ডে কোয়েরি করতে ডট (.) নোটেশন ব্যবহার করা হয়। নিচে EmployeeAppraisalTime অ্যারেতে ডেভেলপার এবং নির্দিষ্ট স্যালারি রেঞ্জ দিয়ে খোঁজা দেখানো হয়েছে।

নমুনা ডেটা তৈরি

> db.findDocumentDemo.insertOne({
  "EmployeeDetails": {
    "EmployeeAppraisalTime": [
      {"EmployeeDesignation": "Developer", "Salary": 45000},
      {"EmployeeDesignation": "Tester", "Salary": 30000},
      {"EmployeeDesignation": "HR", "Salary": 22000},
      {"EmployeeDesignation": "Accountant", "Salary": 18000}
    ]
  }
});
{ "acknowledged": true, "insertedId": ObjectId("5cd2c0f7b64f4b851c3a13a8") }

> db.findDocumentDemo.insertOne({
  "EmployeeDetails": {
    "EmployeeAppraisalTime": [
      {"EmployeeDesignation": "Developer", "Salary": 105000},
      {"EmployeeDesignation": "Tester", "Salary": 45000},
      {"EmployeeDesignation": "HR", "Salary": 34000},
      {"EmployeeDesignation": "Accountant", "Salary": 24000}
    ]
  }
});
{ "acknowledged": true, "insertedId": ObjectId("5cd2c1d5b64f4b851c3a13a9") }

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

> db.findDocumentDemo.find().pretty();
আউটপুট:
{
  "_id": ObjectId("5cd2c0f7b64f4b851c3a13a8"),
  "EmployeeDetails": {
    "EmployeeAppraisalTime": [
      {"EmployeeDesignation": "Developer", "Salary": 45000},
      {"EmployeeDesignation": "Tester", "Salary": 30000},
      {"EmployeeDesignation": "HR", "Salary": 22000},
      {"EmployeeDesignation": "Accountant", "Salary": 18000}
    ]
  }
}
{
  "_id": ObjectId("5cd2c1d5b64f4b851c3a13a9"),
  "EmployeeDetails": {
    "EmployeeAppraisalTime": [
      {"EmployeeDesignation": "Developer", "Salary": 105000},
      {"EmployeeDesignation": "Tester", "Salary": 45000},
      {"EmployeeDesignation": "HR", "Salary": 34000},
      {"EmployeeDesignation": "Accountant", "Salary": 24000}
    ]
  }
}

সাব-অ্যারেতে Designation=Developer এবং Salary 45000 বা 105000 থাকা ডকুমেন্ট খোঁজা

> db.findDocumentDemo.find({
  'EmployeeDetails.EmployeeAppraisalTime.EmployeeDesignation': 'Developer',
  'EmployeeDetails.EmployeeAppraisalTime.Salary': { '$in': [45000,105000] }
});
আউটপুট (দুটি ডকুমেন্টই মэтচ করেছে):
{
  "_id": ObjectId("5cd2c0f7b64f4b851c3a13a8"),
  "EmployeeDetails": {
    "EmployeeAppraisalTime": [
      {"EmployeeDesignation": "Developer", "Salary": 45000},
      {"EmployeeDesignation": "Tester", "Salary": 30000},
      {"EmployeeDesignation": "HR", "Salary": 22000},
      {"EmployeeDesignation": "Accountant", "Salary": 18000}
    ]
  }
}
{
  "_id": ObjectId("5cd2c1d5b64f4b851c3a13a9"),
  "EmployeeDetails": {
    "EmployeeAppraisalTime": [
      {"EmployeeDesignation": "Developer", "Salary": 105000},
      {"EmployeeDesignation": "Tester", "Salary": 45000},
      {"EmployeeDesignation": "HR", "Salary": 34000},
      {"EmployeeDesignation": "Accountant", "Salary": 24000}
    ]
  }
}

ব্যাখ্যা: ডট নোটেশন দিয়ে অ্যারেতে যেকোনো উপাদান মэтช করলে ডকুমেন্ট রিটার্ন হয়। $in দিয়ে একাধিক স্যালারি মান চেক করা হয়েছে।

  1. MongoDB-এ সাব-প্রপার্টি হিসেবে অ্যারে এলিমেন্ট মুছে ফেলা ($pull)

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

  3. MongoDB-এ নির্দিষ্ট অ্যারে এলিমেন্ট সমाहিত ডকুমেন্ট খোঁজা ($all অপারেটর)

  4. MongoDB-এ এমবেডেড ডকুমেন্ট থেকে নির্দিষ্ট এলিমেন্ট খুঁজে বের করা