Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

เลือก Sub-document เฉพาะใน MongoDB

ใช้ find() ร่วมกับ Projection (การฉาย) และ Positional Operator $ เพื่อดึงเฉพาะ Sub-document ที่ตรงเงื่อนไข

ตัวอย่างข้อมูลทดสอบ

> db.demo37.insertOne({"Details":[{"Name":"Chris","Age":21},{"Name":"David","Age":23}]});
> db.demo37.insertOne({"Details":[{"Name":"Sam","Age":23},{"Name":"Robert","Age":25}]});

แสดงข้อมูลทั้งหมด

> db.demo37.find();
{
    "_id" : ObjectId("5e176635cfb11e5c34d898d7"),
    "Details" : [ {"Name" : "Chris", "Age" : 21}, {"Name" : "David", "Age" : 23} ]
}
{
    "_id" : ObjectId("5e17664acfb11e5c34d898d8"),
    "Details" : [ {"Name" : "Sam", "Age" : 23}, {"Name" : "Robert", "Age" : 25} ]
}

คิวรี่เลือก Sub-document ที่ Name = "Sam" (ไม่เอา _id, เอาเฉพาะ Details.$.Name)

> db.demo37.find({'Details.Name' : 'Sam'},{_id: 0, 'Details.$.Name': 1});

ผลลัพธ์

{
    "Details" : [ {"Name" : "Sam", "Age" : 23} ]
}

คำอธิบาย:

  • เงื่อนไข 'Details.Name' : 'Sam' ค้นหาเอกสารที่อาร์เรย์ Details มี Name = Sam
  • Projection {_id: 0, 'Details.$.Name': 1} ซ่อน _id และแสดงเฉพาะ Sub-document แรกที่ตรงเงื่อนไข (ด้วย $)
  • หมายเหตุ: $ ใน projection คืนค่าเพียง 1 องค์ประกอบแรกที่ match