Để xóa bản ghi cụ thể, sử dụng toán tử $pull. Tạo collection với document lồng mảng:
> db.deletingSpecificRecordDemo.insertOne(
{
"StudentDetails": [
{
"StudentName": "John",
"StudentSubjectDetails": [
{ "Subject": "MongoDB", "Marks": 45 },
{ "Subject": "MySQL", "Marks": 67 }
]
}
]
}
); { "acknowledged" : true, "insertedId" : ObjectId("5cf2210ab64a577be5a2bc06") }
Hiển thị document:
> db.deletingSpecificRecordDemo.find().pretty();
Kết quả:
{ "_id" : ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails" : [ { "StudentName" : "John", "StudentSubjectDetails" : [ { "Subject" : "MongoDB", "Marks" : 45 }, { "Subject" : "MySQL", "Marks" : 67 } ] } ] }
Truy vấn xóa phần tử có Marks = 45 khỏi mảng StudentSubjectDetails lồng bên trong StudentDetails (dùng positional operator $):
> db.deletingSpecificRecordDemo.update(
{ "_id": ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails.StudentName" : "John" },
{ "$pull": { "StudentDetails.$.StudentSubjectDetails" : { "Marks": 45 } } },
{ multi: true }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kiểm tra lại document:
> db.deletingSpecificRecordDemo.find().pretty();
Kết quả (đã xóa MongoDB, chỉ còn MySQL):
{ "_id" : ObjectId("5cf2210ab64a577be5a2bc06"), "StudentDetails" : [ { "StudentName" : "John", "StudentSubjectDetails" : [ { "Subject" : "MySQL", "Marks" : 67 } ] } ] }