MongoDB-এ সাব-ডকুমেন্ট বা নেস্টেড অ্যারেতে নির্দিষ্ট মান খুঁজে বের করতে ডট (.) নোটেশন ব্যবহার করা হয়। এটি সহজ এবং কার্যকর পদ্ধতি।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo81.insertOne({"StudentDetails":[{"StudentName":"Carol","StudentSubject":"Java"},{ "StudentName" : "David", "StudentSubject" : "MongoDB "}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bf6ec71bf0181ecc4229d") }
> db.demo81.insertOne({"StudentDetails":[{"StudentName":"Mike","StudentSubject":"Python"},{ "StudentName" : "David", "StudentSubject" : "C "}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bf70471bf0181ecc4229e") }
> db.demo81.insertOne({"StudentDetails":[{"StudentName":"Jace","StudentSubject":"C++"},{ "StudentName" : "John", "StudentSubject" : "MySQL "}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2bf72071bf0181ecc4229f") }
সব ডকুমেন্ট দেখানো
> db.demo81.find();
আউটপুট:
{ "_id" : ObjectId("5e2bf6ec71bf0181ecc4229d"), "StudentDetails" : [ { "StudentName" : "Carol", "StudentSubject" : "Java" }, {"StudentName" : "David", "StudentSubject" : "MongoDB" } ] }
{ "_id" : ObjectId("5e2bf70471bf0181ecc4229e"), "StudentDetails" : [ { "StudentName" : "Mike", "StudentSubject" : "Python" }, { "StudentName" : "David", "StudentSubject" : "C" } ] }
{ "_id" : ObjectId("5e2bf72071bf0181ecc4229f"), "StudentDetails" : [ { "StudentName" : "Jace", "StudentSubject" : "C++" }, { "StudentName" : "John", "StudentSubject" : "MySQL" } ] }
সাব-ডকুমেন্টে খোঁজার কোয়ারী
ডট নোটেশন StudentDetails.StudentSubject ব্যবহার করে "MongoDB" সাবজেক্ট খুঁজে বের করা হয়েছে:
> db.demo81.find({"StudentDetails.StudentSubject":"MongoDB"});
ফলাফল
{ "_id" : ObjectId("5e2bf6ec71bf0181ecc4229d"), "StudentDetails" : [ { "StudentName" : "Carol", "StudentSubject" : "Java" }, { "StudentName" : "David", "StudentSubject" : "MongoDB" } ] }
ব্যাখ্যা: কোয়ারীটি সেই ডকুমেন্ট রিটার্ন করেছে যাতে StudentDetails অ্যারেতে কমপক্ষে একটি এলিমেন্টের StudentSubject ফিল্ডের মান "MongoDB"।
অতিরিক্ত টিপস:
- নির্দিষ্ট এলিমেন্টের জন্য:
db.demo81.find({"StudentDetails.0.StudentSubject": "Java"})(প্রথম এলিমেন্ট) $elemMatchব্যবহার করলে একই এলিমেন্টে একাধিক শর্ত মেলাতে পারেন- প্রজেকশন দিয়ে শুধু মেলে এলিমেন্টটা পেতে:
db.demo81.find({"StudentDetails.StudentSubject":"MongoDB"}, {"StudentDetails.$": 1})