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