คุณสามารถใช้ตัวดำเนินการ $pull เพื่อลบวัตถุออกจากอาร์เรย์ใน MongoDB เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมกับเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -
> db.removeObjectFromArrayDemo.insertOne( ... { ... ... "StudentName": "John", ... "StudentAcademicProjectDetails": ... [{ ... "StudentProjectId": 101, ... "StudentProjectName": "Pig Dice Game" ... }, ... { ... "StudentProjectId": 110, ... "StudentProjectName": "Library Management System" ... }, ... ... { ... "StudentProjectId": 120, ... "StudentProjectName": "Phonebook Management System" ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5c8ad13d6cea1f28b7aa0817") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้ −
> db.removeObjectFromArrayDemo.find().pretty();
ต่อไปนี้เป็นผลลัพธ์ -
{ "_id" : ObjectId("5c8ad13d6cea1f28b7aa0817"), "StudentName" : "John", "StudentAcademicProjectDetails" : [ { "StudentProjectId" : 101, "StudentProjectName" : "Pig Dice Game" }, { "StudentProjectId" : 110, "StudentProjectName" : "Library Management System" }, { "StudentProjectId" : 120, "StudentProjectName" : "Phonebook Management System" } ] }
นี่คือแบบสอบถามเพื่อลบวัตถุออกจากอาร์เรย์ใน MongoDB -
> db.removeObjectFromArrayDemo.update( ... {'_id': ObjectId("5c8ad13d6cea1f28b7aa0817")}, ... { $pull: { "StudentAcademicProjectDetails" : { StudentProjectId: 101 } } }, ... false, ... true ... ); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ให้เราตรวจสอบเอกสารจากคอลเลกชันเพื่อตรวจสอบว่าวัตถุถูกลบออกจากอาร์เรย์หรือไม่ แบบสอบถามมีดังนี้ −
> db.removeObjectFromArrayDemo.find().pretty();
ต่อไปนี้เป็นผลลัพธ์ -
{ "_id" : ObjectId("5c8ad13d6cea1f28b7aa0817"), "StudentName" : "John", "StudentAcademicProjectDetails" : [ { "StudentProjectId" : 110, "StudentProjectName" : "Library Management System" }, { "StudentProjectId" : 120, "StudentProjectName" : "Phonebook Management System" } ] }
ดูตัวอย่างเอาต์พุตด้านบน ลบฟิลด์ “StudentProjectId” ที่มี 101 แล้ว