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 / tạo một trường dựa trên một trường khác:
// { a: "Hello", b: "World" }
// { a: "Olleh", b: "Dlrow" }
db.collection.update(
{},
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ],
{ multi: true }
)
// { a: "Hello", b: "World", active: true }
// { a: "Olleh", b: "Dlrow", active: false }
-
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 của chúng tôi là tất cả tài liệu). -
Phần thứ hai
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ]
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
là một toán tử tổng hợp mới và là bí danh của$addFields
. Sau đó, bất kỳ toán tử tổng hợp nào cũng có thể được sử dụng trong$set
sân khấu; trong trường hợp của chúng tôi, kiểm tra bình đẳng có điều kiện phụ thuộc vào giá trị để sử dụng choactive
mới trường. -
Đừ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.