Mongo 4.2
से शुरू हो रहा है , db.collection.update()
एक एकत्रीकरण पाइपलाइन को स्वीकार कर सकता है, अंत में किसी अन्य फ़ील्ड के आधार पर एक फ़ील्ड के अद्यतन/निर्माण की अनुमति देता है:
// { 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 }
-
पहला भाग
{}
मिलान क्वेरी है, जो फ़िल्टर करना है कि कौन से दस्तावेज़ों को अद्यतन करना है (हमारे मामले में सभी दस्तावेज़)। -
दूसरा भाग
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ]
अद्यतन एकत्रीकरण पाइपलाइन है (एक एकत्रीकरण पाइपलाइन के उपयोग को दर्शाने वाले वर्ग कोष्ठक पर ध्यान दें)।$set
एक नया एकत्रीकरण ऑपरेटर है और$addFields
. का उपनाम है . फिर किसी भी एकत्रीकरण ऑपरेटर का उपयोग$set
. के भीतर किया जा सकता है मंच; हमारे मामले में एक सशर्त समानता जांच जिस पर नएactive
. के लिए उपयोग किए जाने वाले मान पर निर्भर करता है फ़ील्ड. -
मत भूलना
{ multi: true }
, अन्यथा केवल पहला मिलान करने वाला दस्तावेज़ अपडेट किया जाएगा।