Khởi động Mongo 4.2
, db.collection.update()
có thể chấp nhận một đường dẫn tổng hợp, cuối cùng cho phép cập nhật một trường dựa trên giá trị hiện tại của nó:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
Phần đầu tiên
{}
là truy vấn đối sánh, lọc tài liệu nào cần cập nhật (trong trường hợp này là tất cả tài liệu). -
Phần thứ hai
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]
là đường ống tổng hợp cập nhật (lưu ý dấu ngoặc vuông biểu thị việc sử dụng đường ống tổng hợp).$set
(bí danh của$addFields
) là một toán tử tổng hợp mới trong trường hợp này sẽ thay thế giá trị của trường (bằng cách nốia
chính nó với hậu tố"World"
). Lưu ý cácha
được sửa đổi trực tiếp dựa trên giá trị của chính nó ($a
). -
Đừng quên
{ multi: true }
, nếu không, chỉ tài liệu phù hợp đầu tiên sẽ được cập nhật.