MongoDB-এ অ্যারেতে থাকা অবজেক্টের নির্দিষ্ট ফিল্ডগুলো মিলিয়ে ক্যোয়ারি করতে দুটি পদ্ধতি ব্যবহার করা যায়: পূর্ণ অবজেক্ট ম্যাচ এবং ডট নোটেশন।
উদাহরণ
অ্যারে অফ অবজেক্টস সহ ডকুমেন্ট তৈরি করুন:
> db.queryForPartialObjectDemo.insertOne({_id: new ObjectId(), "StudentDetails": [{"StudentId": 1, "StudentName": "Chris"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfcf55bf3115999ed51206") }
> db.queryForPartialObjectDemo.insertOne({_id: new ObjectId(), "StudentDetails": [{"StudentId": 2, "StudentName": "David"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfcf55bf3115999ed51207") }
সকল ডকুমেন্ট দেখুন:
> db.queryForPartialObjectDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cdfcf55bf3115999ed51206"), "StudentDetails" : [ { "StudentId" : 1, "StudentName" : "Chris" } ] }
{ "_id" : ObjectId("5cdfcf55bf3115999ed51207"), "StudentDetails" : [ { "StudentId" : 2, "StudentName" : "David" } ] }
পদ্ধতি ১: পূর্ণ অবজেক্ট ম্যাচ (Exact Object Match)
> db.queryForPartialObjectDemo.find({ StudentDetails: { StudentId: 1, "StudentName": "Chris" } });
আউটপুট:
{ "_id" : ObjectId("5cdfcf55bf3115999ed51206"), "StudentDetails" : [ { "StudentId" : 1, "StudentName" : "Chris" } ] }
শর্ত: অ্যারেতে অবজেক্টটি হুবহু একই ফিল্ড এবং একই আর্ডারে থাকতে হবে। অতিরিক্ত ফিল্ড থাকলে ম্যাচ হবে না।
পদ্ধতি ২: ডট নোটেশন (Dot Notation) — সুপারিশকৃত
> db.queryForPartialObjectDemo.find({ "StudentDetails.StudentName": "Chris" });
আউটপুট:
{ "_id" : ObjectId("5cdfcf55bf3115999ed51206"), "StudentDetails" : [ { "StudentId" : 1, "StudentName" : "Chris" } ] }
সুবিধা:
- শুধু নির্দিষ্ট ফিল্ড ম্যাচ করে, অন্যান্য ফিল্ড উপেক্ষা করে।
- অ্যারেতে যেকোনো এলিমেন্টে ম্যাচ করলে ডকুমেন্ট ফেরত দেয়।
- ইন্ডেক্স ব্যবহার করতে পারে (Single field index on
StudentDetails.StudentName)।
সুপারিশ: সাধারণ কেসে ডট নোটেশনই ব্যবহার করুন। পূর্ণ অবজেক্ট ম্যাচ খুব কঠোর।