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

मोंगो डीबी:दस्तावेज़ को एक संग्रह से कैसे कॉपी करें और इसे किसी अन्य संग्रह से संबंधित दस्तावेज़ में फ़ील्ड के रूप में कैसे जोड़ें?

MongoDB 4.4 में शुरू, $merge उसी संग्रह में आउटपुट कर सकते हैं जिसे एकत्र किया जा रहा है:

db.products.aggregate([       
   { /**
    * from: The target collection.
    * localField: The local join field.
    * foreignField: The target join field.
    * as: The name for the results.
    * pipeline: The pipeline to run on the joined collection.
    * let: Optional variables to use in the pipeline field stages.
    */
   $lookup: {
     from: 'events',
     localField: '_id',
     foreignField: 'product_id',
     as: 'events'
   }},
   {/**
    * into: The target collection.
    * on: Fields to  identify.
    * whenMatched: Action for matching docs.
    * whenNotMatched: Action for non-matching docs.
    */
   $merge: {
     into: 'products',
     on: "_id",
     whenMatched: 'merge',
     whenNotMatched: 'insert'
   }}
])

जागरूक रहें: जब $ merge उसी संग्रह में आउटपुट करता है जिसे एकत्रित किया जा रहा है, तो दस्तावेज़ कई बार अपडेट हो सकते हैं या ऑपरेशन के परिणामस्वरूप अनंत लूप हो सकता है। अधिक विवरण यहां https://docs .mongodb.com/manual/reference/operator/aggregation/merge/#merge-behavior-same-Collection

यदि यह एक बार का अपडेट है तो आप यह सुनिश्चित करने के लिए पहले चरण के रूप में प्रारंभिक फ़िल्टर जोड़कर पाइपलाइन की सुरक्षा कर सकते हैं कि दस्तावेज़ एक बार ठीक से अपडेट किया गया है:

{ $match: { events: { $exists: false } }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पूरे संग्रह से एक दस्तावेज़ खोजें, जिसमें एक विशिष्ट मान कई एम्बेडेड उप दस्तावेज़ों के अंदर निहित हो

  2. mongodb जाँच करें कि क्या बिंदु बहुभुज में है

  3. संग्रह में संग्रहीत सरणी को दोबारा आकार दें और CSV को निर्यात करें

  4. MongoDB $ और एकत्रीकरण पाइपलाइन ऑपरेटर

  5. MongoDB - $size का तर्क एक ऐरे होना चाहिए, लेकिन यह प्रकार का था:EOO / अनुपलब्ध