MongoDB-এ ডট (.) নোটেশন ব্যবহার করে নেস্টেড অ্যারে-র ফিল্ড কোয়েরি করা
MongoDB-এ একটি ডকুমেন্টের ভেতরে অ্যারে থাকলে, অ্যারে-র ভেতরের অবজেক্টের ফিল্ডে কোয়েরি করার জন্য ডট (.) নোটেশন ব্যবহার করা হয়। MongoDB অটোমেটিক্যালি অ্যারে-র প্রতিটি এলিমেন্ট চেক করে।
১. কালেকশন ও নেস্টেড অ্যারে ডেটা তৈরি
> db.demo326.insertOne({
id: 101,
"ProductDetails": [
{ "ProductId": "Prod-101", "ProductName": "Product-1" },
{ "ProductId": "Prod-102", "ProductName": "Product-2" }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516751f8647eb59e562074") }
> db.demo326.insertOne({
id: 103,
"ProductDetails": [
{ "ProductId": "Prod-104", "ProductName": "Product-5" },
{ "ProductId": "Prod-105", "ProductName": "Product-6" }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516771f8647eb59e562075") }
২. সব ডকুমেন্ট দেখানো
> db.demo326.find();
আউটপুট:
{
"_id" : ObjectId("5e516751f8647eb59e562074"),
"id" : 101,
"ProductDetails" : [
{ "ProductId" : "Prod-101", "ProductName" : "Product-1" },
{ "ProductId" : "Prod-102", "ProductName" : "Product-2" }
]
}
{
"_id" : ObjectId("5e516771f8647eb59e562075"),
"id" : 103,
"ProductDetails" : [
{ "ProductId" : "Prod-104", "ProductName" : "Product-5" },
{ "ProductId" : "Prod-105", "ProductName" : "Product-6" }
]
}
৩. ডট নোটেশন দিয়ে কোয়েরি (ProductId: "Prod-104" থাকা ডকুমেন্ট)
> db.demo326.find({"ProductDetails.ProductId": "Prod-104"});
৪. ফলাফল
{
"_id" : ObjectId("5e516771f8647eb59e562075"),
"id" : 103,
"ProductDetails" : [
{ "ProductId" : "Prod-104", "ProductName" : "Product-5" },
{ "ProductId" : "Prod-105", "ProductName" : "Product-6" }
]
}
কীভাবে কাজ করে: MongoDB ProductDetails অ্যারে-র প্রতিটি অবজেক্টের ProductId ফিল্ড চেক করে। যেই ডকুমেন্টের অ্যারে-তে কোনো একটি এলিমেন্টে "Prod-104" পায়, সেটি ফেরত দেয়। পুরো অ্যারে ফেরত আসে, শুধু ম্যাচ করা এলিমেন্ট নয়।
নোট: শুধু ম্যাচ করা এলিমেন্টই চাইলে $elemMatch বা এগ্রিগেশনের $filter ব্যবহার করতে হবে।