Memulai Mongo 4.2
, db.collection.update()
dapat menerima saluran agregasi, akhirnya mengizinkan pembaruan/pembuatan bidang berdasarkan bidang lain:
// { 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 }
-
Bagian pertama
{}
adalah kueri kecocokan, memfilter dokumen mana yang akan diperbarui (dalam kasus kami semua dokumen). -
Bagian kedua
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ]
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 pemeriksaan kesetaraan bersyarat yang bergantung pada nilai yang akan digunakan untukactive
baru lapangan. -
Jangan lupa
{ multi: true }
, jika tidak, hanya dokumen pertama yang cocok yang akan diperbarui.