ใช้ $elemMatch หลายชั้น
เพื่อดึงอิลิเมนต์เฉพาะในอาร์เรย์ซ้อนหลายชั้น ให้ใช้ $elemMatch แบบ巢 (nested) เริ่มต้นด้วยข้อมูลผู้ใช้ที่มีรายละเอียดซ้อนกัน
> db.particularElementDemo.insertOne({ "GroupId": "Group-1", "UserDetails": [ { "UserName": "John", "UserOtherDetails": [ { "UserEmailId": "John123@gmail.com", "UserFriendName": [ { "Name": "Chris" } ] }, { "UserEmailId": "John22@hotmail.com", "UserFriendName": [ { "Name": "Robert" } ] } ] } ] });
คำสั่งค้นหาที่ UserFriendName.Name = "Robert" ในชั้นลึก:
> db.particularElementDemo.find({ 'UserDetails': { $elemMatch: { 'UserOtherDetails': { $elemMatch: { 'UserFriendName': { $elemMatch: { "Name": "Robert" } } } } } } }, { "UserDetails.UserOtherDetails.UserFriendName.Name": 1 });
ผลลัพธ์แสดงเฉพาะส่วนที่ตรงกับเงื่อนไข