MongoDB কালেকশনে অবজেক্ট অ্যারে-এ কুয়েরি করা এলিমেন্ট ফিল্টার করতে প্রজেকশন অপারেটর $elemMatch ব্যবহার করতে পারেন। শুধু কুয়েরি করা এলিমেন্ট রিট্রিভ করতে, প্রথমে ডকুমেন্ট অবজেক্ট অ্যারে সহ একটি কালেকশন তৈরি করি।
কুয়েরি:
> db.objectArray.insert({"Persons":[ {"PersonName":"Adam","PersonSalary":25000},{"PersonName":"Larry","PersonSalary":27000 }]}); WriteResult({ "nInserted" : 1 })
> db.objectArray.insert({"Persons":[ {"PersonName":"David","PersonSalary":32000},{"PersonName":"Carol","PersonSalary":77000 }]}); WriteResult({ "nInserted" : 1 })
find() সাহায্যে সব ডকুমেন্ট দেখান। কুয়েরি:
> db.objectArray.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5c6bfadc68174aae23f5ef53"), "Persons" : [ { "PersonName" : "Adam", "PersonSalary" : 25000 }, { "PersonName" : "Larry", "PersonSalary" : 27000 } ] }
{ "_id" : ObjectId("5c6bfb0968174aae23f5ef54"), "Persons" : [ { "PersonName" : "David", "PersonSalary" : 32000 }, { "PersonName" : "Carol", "PersonSalary" : 77000 } ] }
MongoDB-এ অবজেক্ট অ্যারে-এ শুধু কুয়েরি করা এলিমেন্ট রিট্রিভ করার কুয়েরি। এখানে _id:0 যোগ করা হয়েছে id প্রোপার্টি এক্সক্লুড করতে ( _id প্রোপার্টি দেখাবে না):
> db.objectArray.find({"Persons.PersonSalary":25000}, { _id:0,Persons:{$elemMatch:{"PersonSalary":25000}}}).pretty();
আউটপুট:
{ "Persons" : [ { "PersonName" : "Adam", "PersonSalary" : 25000 } ] }
উপরোক্ত টাস্ক করার বিকল্প পদ্ধতি প্রজেকশন অপারেটর $ ব্যবহার করে। কুয়েরি:
> db.objectArray.find({"Persons.PersonSalary":25000}, { _id:0,'Persons.$':1}).pretty();
আউটপুট:
{ "Persons" : [ { "PersonName" : "Adam", "PersonSalary" : 25000 } ] }