MongoDB-এ নেস্টেড (nested) ডকুমেন্টের ফিল্ডে শর্ত (condition) লাগাতে ডট নোটেশন (dot notation) ব্যবহার করা হয়। উদাহরণস্বরূপ, গভীর নেস্টেড ফিল্ডে $gt (greater than) অপারেটর লাগানো।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo688.insert({
information: {
id: 1,
details: [
{ otherDetails: { values: 75 } }
]
}
});
WriteResult({ "nInserted" : 1 })
> db.demo688.insert({
information: {
id: 2,
details: [
{ otherDetails: { values: 78 } }
]
}
});
WriteResult({ "nInserted" : 1 })
সব ডকুমেন্ট দেখানো
> db.demo688.find();
আউটপুট:
{ "_id" : ObjectId("5ea57986a7e81adc6a0b3965"), "information" : { "id" : 1, "details" : [ { "otherDetails" : { "values" : 75 } } ] } }
{ "_id" : ObjectId("5ea5799ca7e81adc6a0b3966"), "information" : { "id" : 2, "details" : [ { "otherDetails" : { "values" : 78 } } ] } }
নেস্টেড ফিল্ডে শর্ত লাগানো (values > 75)
> db.demo688.find({ "information.details.otherDetails.values": { $gt: 75 } });
আউটপুট
{ "_id" : ObjectId("5ea5799ca7e81adc6a0b3966"), "information" : { "id" : 2, "details" : [ { "otherDetails" : { "values" : 78 } } ] } }
কোয়েরির ব্যাখ্যা
information.details.otherDetails.values— ডট নোটেশন দিয়ে নেস্টেড পথ নির্দেশ করা হয়।{ $gt: 75 }— ৭৫ থেকে বড় মান ফিল্টার করে।- MongoDB অ্যারেতে থাকা এলিমেন্টগুলোর মধ্যে যেকোনো একটি ম্যাচ করলে ডকুমেন্ট রিটার্ন করে (এখানে অ্যারেতে ১টি এলিমেন্ট)۔
মূল পয়েন্টসমূহ
- ডট নোটেশন:
"parent.child.grandchild"ফরম্যাটে নেস্টেড ফিল্ড এক্সেস করুন। - অ্যারে ফিল্ডের ক্ষেত্রে ডট নোটেশন অ্যারের যেকোনো এলিমেন্ট ম্যাচ করলে সত্য রিটার্ন করে।
- স্পেসিফিক অ্যারে এলিমেন্ট কুয়েরি করতে
$elemMatchব্যবহার করুন। - কুয়েরি স্ট্রিংয়ের ভেতরে রাখুন (quotes):
{ "a.b.c": 1 }। - ইন্ডেক্স: নেস্টেড ফিল্ডে ইন্ডেক্স তৈরি করা যায়
db.col.createIndex({ "a.b.c": 1 })।