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

Cập nhật từng trường của bản ghi trong collection MongoDB theo công thức

Sử dụng $mul với all positional operator $[ ]

Toán tử $mul nhân giá trị trường với số cho trước. $[ ] áp dụng cho tất cả phần tử trong mảng.

Dữ liệu mẫu

> db.demo749.insertOne({
  details: [
    { id: 1, a: 10 },
    { id: 2, a: 5 },
    { id: 3, a: 20 }
  ]
});

Truy vấn: nhân trường a của mọi phần tử trong mảng details với 2/5

db.demo749.update(
  {},
  { $mul: { "details.$[].a": 2/5 } },
  { multi: true }
);

Kết quả

{ "_id": ObjectId("..."), "details": [
  { "id": 1, "a": 4 },   // 10 * 0.4 = 4
  { "id": 2, "a": 2 },   // 5 * 0.4 = 2
  { "id": 3, "a": 8 }    // 20 * 0.4 = 8
] }

Tất cả phần tử mảng details đều được cập nhật trường a theo công thức.