Mulai dari Mongo 4.2
, db.collection.update()
dapat menerima pipa agregasi, akhirnya memungkinkan pembaruan bidang berdasarkan nilainya sendiri; sehingga menghindari pola find/foreach yang tidak efisien.
Juga, Anda melihat $inc
operator untuk menambahkan hari, tetapi sekarang kita dapat menggunakan saluran agregasi sebagai pembaruan, $add
operator dapat digunakan:
// { "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" }
-
Bagian pertama
{ date : { $exists : true } }
adalah kueri pencocokan, memfilter dokumen mana yang akan diperbarui (dalam kasus kami semua dokumen memilikidate
lapangan). -
Bagian kedua
[{ $set: { date: { $add: ["$date", 24*60*60000] } } }]
adalah pipa agregasi pembaruan (perhatikan tanda kurung siku yang menandakan penggunaan pipa agregasi).$set
adalah operator agregasi baru dan alias dari$addFields
. Kemudian operator agregasi apa pun dapat digunakan dalam$set
panggung; dalam kasus kami$add
. sederhana antara tanggal yang ada dan representasi hari dalam milidetik.