यदि आप दस्तावेज़ को अपडेट कर रहे हैं, तो आप अपडेट . के भीतर पाइपलाइन का उपयोग कर सकते हैं . लेकिन यह सुविधा MongoDB संस्करण 4.2 या बाद के संस्करण के साथ उपलब्ध है।
db.collection.update(
{ },
[
{
$set: {
arr: {
$cond: [ { $in: [ element, "$arr" ] },
{ $setDifference: [ "$arr", [ element ] ] },
{ $concatArrays: [ "$arr", [ element ] ] }
]
}
}
}
]
)
नोट: वेरिएबल element
को मानते हुए एक स्ट्रिंग है मूल्य।
यदि आप केवल पूछताछ कर रहे हैं तो आप निम्नलिखित एकत्रीकरण का उपयोग कर सकते हैं:
db.collection.aggregate([
{
$addFields: {
arr: {
$cond: [ { $in: [ element, "$arr" ] },
{ $setDifference: [ "$arr", [ element ] ] },
{ $concatArrays: [ "$arr", [ element ] ] }
]
}
}
}
] )
लेकिन, यदि आप 4.2 से पहले MongoDB संस्करण का उपयोग कर रहे हैं, तो आप दस्तावेज़ को अपडेट करने के लिए ऊपर से कुल आउटपुट का उपयोग कर सकते हैं:
db.collection.aggregate( [
// aggregation pipeine from above ...
] ).forEach( doc => db.collection.updateOne( { _id: doc._id }, { $set: { arr: doc.arr } } ) )