Bắt đầu trong Mongo 4.2
, db.collection.update()
có thể chấp nhận một đường ống 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ị của chính nó; do đó tránh được các mẫu tìm / dò trước không hiệu quả.
Ngoài ra, bạn cũng đang xem $inc
toán tử để thêm một ngày, nhưng bây giờ chúng ta có thể sử dụng đường dẫn tổng hợp làm bản cập nhật, $add
toán tử có thể được sử dụng:
// { "date" : ISODate("2020-04-05T07:14:17.802Z"), "x" : "y" }
db.collection.updateMany(
{ date : { $exists : true } },
[{ $set: { date: { $add: ["$date", 24*60*60000] } } }]
)
// { "date" : ISODate("2020-04-06T07:14:17.802Z"), "x" : "y" }
-
Phần đầu tiên
{ date : { $exists : true } }
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ả các tài liệu códate
trường). -
Phần thứ hai
[{ $set: { date: { $add: ["$date", 24*60*60000] } } }]
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 ta, một$add
đơn giản ý nghĩa giữa ngày hiện tại và đại diện của một ngày tính bằng mili giây.