หากต้องการลบบันทึกเฉพาะ ให้ใช้ “$pull” และเนื่องจากเรากำลังอัปเดตคอลเลกชันที่สร้างไว้แล้ว ให้ใช้ UPDATE()
ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo213.insertOne({ ... "id": 101, ... "details1": [ ... { ... "Name": "Chris", ... "details2": [ ... { ... "StudentName": "David", ... "Subject": "MongoDB" ... }, ... { ... "StudentName": "Mike", ... "Subject": "MySQL" ... } ... ] ... ... } ... ] ...} ...); { "acknowledged" : true, "insertedId" : ObjectId("5e3e300c03d395bdc2134704") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo213.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e3e300c03d395bdc2134704"), "id" : 101, "details1" : [ { "Name" : "Chris", "details2" : [ { "StudentName" : "David", "Subject" : "MongoDB" }, { "StudentName" : "Mike", "Subject" : "MySQL" } ] } ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อลบบันทึกเฉพาะจากอาร์เรย์ที่ซ้อนกันภายในอาร์เรย์อื่น -
> db.demo213.update({"id": 101, "details1.Name": "Chris"}, ... { ... "$pull": {"details1.$.details2" : { "Subject": "MySQL" }} ... }, multi=true ...) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo213.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e3e300c03d395bdc2134704"), "id" : 101, "details1" : [ { "Name" : "Chris", "details2" : [ { "StudentName" : "David", "Subject" : "MongoDB" } ] } ] }