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मौजूदा तारीख और मिलीसेकंड में एक दिन के प्रतिनिधित्व के बीच की घटना।