MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB में सरणी में किसी तत्व को कैसे टॉगल करें?

यदि आप दस्तावेज़ को अपडेट कर रहे हैं, तो आप अपडेट . के भीतर पाइपलाइन का उपयोग कर सकते हैं . लेकिन यह सुविधा 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 } } ) )


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब में परिणामों को कैसे क्रमबद्ध और सीमित करें?

  2. Node.js + mongodb ऐप का मूल आर्किटेक्चर क्या है?

  3. डोकर कंटेनर में एक मोंगोडब खोल कैसे शुरू करें?

  4. नेवला - ईमेल सिंटैक्स मान्य करें

  5. एकत्रीकरण विधि के लिए स्प्रिंग डेटा-मोंगोडीबी विकल्प