MongoDB-এ অ্যারে অবজেক্টের ভেতরের ফিল্ডে রিকারসিভ সার্চ (নেস্টেড সার্চ) করতে ডট নোটেশন (arrayName.fieldName) ব্যবহার করা হয়।
নমুনা ডেটা তৈরি করা
findOperationDemo কালেকশনে দুটি ডকুমেন্ট ইনসার্ট করি যাতে ClientDetails অ্যারেতে এমবেডেড অবজেক্ট থাকে।
> db.findOperationDemo.insertOne({ "ClientDetails": [ { "ClientId": 101, "ClientName": "Chris" }, { "ClientId": 102, "ClientName": "Robert" } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9a118b50a6c6dd317ad99") }
> db.findOperationDemo.insertOne({ "ClientDetails": [ { "ClientId": 110, "ClientName": "David" }, { "ClientId": 112, "ClientName": "Mike" } ] });
{ "acknowledged" : true, "insertedId" : ObjectId("5cd9a12fb50a6c6dd317ad9a") }
সকল ডকুমেন্ট দেখানো
> db.findOperationDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cd9a118b50a6c6dd317ad99"), "ClientDetails" : [ { "ClientId" : 101, "ClientName" : "Chris" }, { "ClientId" : 102, "ClientName" : "Robert" } ] }
{ "_id" : ObjectId("5cd9a12fb50a6c6dd317ad9a"), "ClientDetails" : [ { "ClientId" : 110, "ClientName" : "David" }, { "ClientId" : 112, "ClientName" : "Mike" } ] }
ডট নোটেশন দিয়ে রিকারসিভ সার্চ
ClientDetails অ্যারেতে যেকোনো এলিমেন্টে ClientId: 110 আছে কিনা চেক করি:
> db.findOperationDemo.find({ "ClientDetails.ClientId": 110 });
আউটপুট:
{ "_id" : ObjectId("5cd9a12fb50a6c6dd317ad9a"), "ClientDetails" : [ { "ClientId" : 110, "ClientName" : "David" }, { "ClientId" : 112, "ClientName" : "Mike" } ] }
ব্যাখ্যা: MongoDB স্বয়ংক্রিয়ভাবে অ্যারের প্রতিটি এলিমেন্ট চেক করে। ClientDetails.ClientId মানে "ClientDetails অ্যারেতে যেকোনো অবজেক্টের ClientId"। এটি রিকারসিভ/নেস্টেড সার্চের সরলতম রূপ। গভীর নেস্টিংয়ের জন্য ডট নোটেশন চালিয়ে যান (যেমন a.b.c.field)।