ใช้ $pull ร่วม Dot Notation เพื่อลบองค์ประกอบในอาร์เรย์ที่ซ้อนอยู่ในออบเจ็กต์ (Sub-property)
ตัวอย่างข้อมูลทดสอบ
> db.demo388.insertOne({
_id: '101',
userDetails: {
isMarried: false,
userInfo: [{Name:"Chris", Age:21}]
}
});
แสดงข้อมูลก่อน
> db.demo388.find();
{
"_id" : "101",
"userDetails" : {
"isMarried" : false,
"userInfo" : [ {"Name" : "Chris", "Age" : 21} ]
}
}
คำสั่งลบ userInfo ที่ Name = "Chris"
> db.demo388.update(
{"_id": "101"},
{"$pull": {"userDetails.userInfo": {"Name":"Chris"}}}
)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ผลลัพธ์ (userInfo ว่าง)
> db.demo388.find();
{
"_id" : "101",
"userDetails" : { "isMarried" : false, "userInfo" : [] }
}
คำอธิบาย: $pull ลบองค์ประกอบออกจากอาร์เรย์ที่ตรงกับเงื่อนไข รองรับ Dot Notation เข้าถึงอาร์เรย์ซ้อน (userDetails.userInfo) ได้โดยตรง