Dùng toán tử projection $elemMatch để lọc chỉ phần tử khớp trong mảng đối tượng. Tạo collection objectArray:
> 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 })
Hiển thị:
> db.objectArray.find().pretty();
Truy vấn chỉ lấy phần tử PersonSalary = 25000, loại bỏ _id:
> db.objectArray.find({"Persons.PersonSalary":25000}, { _id:0, Persons:{$elemMatch:{"PersonSalary":25000}}}).pretty();
Kết quả:
{ "Persons" : [ { "PersonName" : "Adam", "PersonSalary" : 25000 } ] }
Cách thay thế dùng positional operator $:
> db.objectArray.find({"Persons.PersonSalary":25000}, { _id:0, 'Persons.$':1}).pretty();
Kết quả tương tự.