Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Xóa bản ghi cụ thể từ mảng lồng trong mảng khác trong MongoDB

Để 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 } ] } ] }