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

Cập nhật mảng với $push trong MongoDB

Để thêm phần tử vào mảng lồng nhau, sử dụng updateOne() kết hợp $push và positional operator $ với $elemMatch. Tạo collection:

> db.demo526.insertOne({
  "CountryName": "US",
  "TeacherName": "Bob",
  "StudentInformation": [
    { "Name": "Chris", "Subject": "MySQL", "ListOfMailId": [] },
    { "Name": "David", "Subject": "MongoDB", "ListOfMailId": [] }
  ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8af031437efc8605595b6b") }

Hiển thị dữ liệu (ListOfMailId rỗng):

> db.demo526.find();

Kết quả:

Thêm email cho David (Subject=MongoDB) dùng $elemMatch tìm phần tử, $push thêm vào mảng ListOfMailId:

> db.demo526.updateOne(
  {
    _id: ObjectId("5e8af031437efc8605595b6b"),
    "StudentInformation": { "$elemMatch": { "Name": "David", "Subject": "MongoDB" }}
  },
  { "$push": { "StudentInformation.$.ListOfMailId": { "MailId": "David@gmail.com" }}}
)
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Kiểm tra lại - David đã có email:

> db.demo526.find();

Kết quả:

Giải thích: $elemMatch khớp phần tử mảng thỏa mãn ĐIỀU KIỆN Name=David VÀ Subject=MongoDB. Toán tử $ tham chiếu đến phần tử khớp đó. $push thêm đối tượng vào mảng ListOfMailId.