MongoDB-এ ডট নোটেশন ব্যবহার করে অ্যারে এলিমেন্ট কুয়েরি করা
MongoDB-এ ডকুমেন্টের ভিতরে থাকা অ্যারে অবজেক্টের ফিল্ড দিয়ে কুয়েরি করার জন্য ডট নোটেশন (dot notation) ব্যবহার করা হয়। এটি অ্যারেতে কোনো এলিমেন্টে ম্যাচ করলে পুরো ডকুমেন্ট রিটার্ন করে।
উদাহরণ: ক্লায়েন্ট ডিটেইলস সহ ডকুমেন্ট তৈরি
> db.demo38.insertOne({"ClientDetails":[{"ClientId":101,"ClientName":"Chris"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e176abccfb11e5c34d898d9") }
> db.demo38.insertOne({"ClientDetails":[{"ClientId":102,"ClientName":"David"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e176ac7cfb11e5c34d898da") }
> db.demo38.insertOne({"ClientDetails":[{"ClientId":103,"ClientName":"Mike"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e176ad0cfb11e5c34d898db") }
সমস্ত ডকুমেন্ট
> db.demo38.find();
{ "_id" : ObjectId("5e176abccfb11e5c34d898d9"), "ClientDetails" : [ { "ClientId" : 101, "ClientName" : "Chris" } ] }
{ "_id" : ObjectId("5e176ac7cfb11e5c34d898da"), "ClientDetails" : [ { "ClientId" : 102, "ClientName" : "David" } ] }
{ "_id" : ObjectId("5e176ad0cfb11e5c34d898db"), "ClientDetails" : [ { "ClientId" : 103, "ClientName" : "Mike" } ] }
অ্যারে ভিতরের ClientName="David" দিয়ে কুয়েরি
> db.demo38.find({"ClientDetails.ClientName":"David"});
ফলাফল
{ "_id" : ObjectId("5e176ac7cfb11e5c34d898da"), "ClientDetails" : [ { "ClientId" : 102, "ClientName" : "David" } ] }
গভীরভাবে
ClientDetails.ClientName: ডট নোটেশন অ্যারেতে প্রতিটি অবজেক্টেরClientNameচেক করে।- যদি একই ডকুমেন্টে একাধিক "David" থাকে, তবে ডকুমেন্ট একবার রিটার্ন হবে।
- শুধু ম্যাচ করা এলিমেন্ট পেতে:
db.demo38.find({"ClientDetails.ClientName":"David"}, {"ClientDetails.$": 1})(প্রজেকশনে$ব্যবহার)। - এলিমেন্টের পজিশন জানতে: অগ্রেশন পাইপলাইন (
$indexOfArray) ব্যবহার করুন।