ค้นหาเอกสารที่มีออบเจกต์บางส่วน (partial object) ในอาร์เรย์ ได้ 2 วิธี เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:
> 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();
วิธีที่ 1: ระบุออบเจกต์ทั้งหมดในเงื่อนไข
> db.queryForPartialObjectDemo.find({StudentDetails: {StudentId: 1, "StudentName" : "Chris"}});วิธีที่ 2: ใช้ Dot Notation (แนะนำ)
> db.queryForPartialObjectDemo.find({"StudentDetails.StudentName":"Chris"});ความแตกต่าง: วิธีที่ 1 ต้องระบุฟิลด์ทุกตัวของออบเจกต์ที่ต้องการจับคู่ ในขณะที่วิธีที่ 2 (dot notation) ระบุแค่ฟิลด์ที่ต้องการค้นหา กระชับกว่าและยืดหยุ่นกว่า