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

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

MongoDB-এ সাবডকুমেন্ট (নেস্টেড অবজেক্ট) সর্ট, সিলেক্ট এবং কোয়েরি করতে অ্যাগ্রিগেশন পাইপলাইনে $unwind (যদি অ্যারে হয়), $project, এবং $sort স্টেজ ব্যবহার করা হয়।

নমুনা কালেকশন তৈরি

> db.demo236.insertOne({ "details": { "Name": "Chris", "Age": 21 } });
{ "acknowledged": true, "insertedId": ObjectId("5e419015f4cebbeaebec514c") }

> db.demo236.insertOne({ "details": { "Name": "David", "Age": 23 } });
{ "acknowledged": true, "insertedId": ObjectId("5e41901cf4cebbeaebec514d") }

> db.demo236.insertOne({ "details": { "Name": "Bob", "Age": 24 } });
{ "acknowledged": true, "insertedId": ObjectId("5e419023f4cebbeaebec514e") }

ডকুমেন্টগুলো দেখানো

> db.demo236.find();

আউটপুট:

{ "_id": ObjectId("5e419015f4cebbeaebec514c"), "details": { "Name": "Chris", "Age": 21 } }
{ "_id": ObjectId("5e41901cf4cebbeaebec514d"), "details": { "Name": "David", "Age": 23 } }
{ "_id": ObjectId("5e419023f4cebbeaebec514e"), "details": { "Name": "Bob", "Age": 24 } }

নোট: এখানে details একটি অবজেক্ট (সাবডকুমেন্ট), অ্যারে নয়। কিন্তু উদাহরণে $unwind ব্যবহার করা হয়েছে, যা অ্যারের জন্য। সাবডকুমেন্টের জন্য $unwind লাগে না।

সাবডকুমেন্ট সর্ট, সিলেক্ট, কোয়েরি (সঠিক পদ্ধতি)

> db.demo236.aggregate([
  { $project: { 
      Name: '$details.Name', 
      Age: '$details.Age' 
    } 
  },
  { $sort: { Name: -1 } }
]);

ফলাফল

{ "_id": ObjectId("5e41901cf4cebbeaebec514d"), "Name": "David", "Age": 23 }
{ "_id": ObjectId("5e419015f4cebbeaebec514c"), "Name": "Chris", "Age": 21 }
{ "_id": ObjectId("5e419023f4cebbeaebec514e"), "Name": "Bob", "Age": 24 }

ব্যাখ্যা:

  • $project - details.Name এবং details.Age এক্সট্রাক্ট করে রুট লেভেলে আনে।
  • $sort: { Name: -1 } - নামের ডিসেন্ডিং অর্ডারে সর্ট (David, Chris, Bob)।
  • $unwind প্রয়োজন নেই কারণ details অ্যারে নয়।

সাবডকুমেন্টে কোয়েরি (find-এ)

// ডট নোটেশন ব্যবহার
db.demo236.find({ "details.Age": { $gt: 22 } });
// ফলাফল: David (23), Bob (24)

সাবডকুমেন্ট আপডেট

db.demo236.updateOne(
  { "details.Name": "Chris" },
  { $set: { "details.Age": 22 } }
);

অ্যারে অফ সাবডকুমেন্টের ক্ষেত্রে

যদি details অ্যারে হয় (details: [{Name: "Chris", Age: 21}, ...]), তবে $unwind ব্যবহার করুন।

  1. MongoDB-তে শব্দ অনুযায়ী সর্ট করার পদ্ধতি

  2. MongoDB কোয়ারিতে নির্দিষ্ট কলাম সিলেক্ট করা

  3. MongoDB কুয়েরি বিভক্ত করে ৫টি মান বাদ দেওয়া

  4. MongoDB-তে অ্যাগ্রিগেশন দিয়ে ডISTINCT সিলেক্ট এবং কাউন্ট করা