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

MongoDB में $ UnionWith का उपयोग करते समय डुप्लिकेट निकालें

MongoDB में, $unionWith एकत्रीकरण पाइपलाइन चरण दो संग्रहों का एक संघ करता है, और इसमें डुप्लीकेट शामिल हैं।

यह SQL के UNION ALL . के समान व्यवहार करता है , जिसमें डुप्लीकेट भी शामिल हैं। इसके विपरीत, केवल UNION . का उपयोग करके (अर्थात ALL . के बिना ) SQL में डुप्लीकेट हटाता है।

MongoDB में, हमारे पास $unionWith ALL . निर्दिष्ट करने का विकल्प नहीं है या इसी तरह, इसलिए हमें किसी अन्य तरीके से डुप्लिकेट को कम करने की आवश्यकता है।

MongoDB में, हम $group . का उपयोग करके डुप्लीकेट हटा सकते हैं मंच।

उदाहरण

मान लीजिए कि हम निम्नलिखित दस्तावेजों को दो संग्रहों में सम्मिलित करते हैं; एक जिसे cats . कहा जाता है और दूसरे को dogs . कहा जाता है :

db.cats.insertMany([
    { _id: 1, name: "Fluffy", type: "Cat", weight: 5 },
    { _id: 2, name: "Scratch", type: "Cat", weight: 3 },
    { _id: 3, name: "Meow", type: "Cat", weight: 7 }
    ])

db.dogs.insertMany([
    { _id: 1, name: "Wag", type: "Dog", weight: 20 },
    { _id: 2, name: "Bark", type: "Dog", weight: 10 },
    { _id: 3, name: "Fluffy", type: "Dog", weight: 40 }
    ])

और मान लें कि हम दोनों संग्रहों से सभी नाम वापस करने के लिए निम्नलिखित क्वेरी चलाते हैं:

db.cats.aggregate( [
   { $project: { name: 1, _id: 0 } },
   { $unionWith: { coll: "dogs", pipeline: [ { $project: { name: 1, _id: 0 } } ]} }
] )

परिणाम:

{ "name" : "Fluffy" }
{ "name" : "Scratch" }
{ "name" : "Meow" }
{ "name" : "Wag" }
{ "name" : "Bark" }
{ "name" : "Fluffy" }

हम देख सकते हैं कि Fluffy नाम दो बार प्रकट होता है। ऐसा इसलिए है क्योंकि हमारे संग्रह में दो फ़्लफ़ी हैं - एक cats . में संग्रह और dogs . में से एक संग्रह।

यह ठीक है अगर हम डुप्लिकेट मान पाकर खुश हैं। लेकिन क्या होगा अगर हम नहीं? क्या होगा यदि हम केवल दोनों संग्रहों से अलग-अलग नामों की सूची चाहते हैं?

वहीं $group चरण आता है।

हम $group जोड़ सकते हैं name . के लिए चरण फ़ील्ड, ताकि यह इस तरह दिखे:

db.cats.aggregate( [
   { $project: { name: 1, _id: 0 } },
   { $unionWith: { coll: "dogs", pipeline: [ { $project: { name: 1, _id: 0 } } ]} },
   { $group: { _id: "$name" } }
] )

परिणाम:

{ "_id" : "Meow" }
{ "_id" : "Bark" }
{ "_id" : "Scratch" }
{ "_id" : "Wag" }
{ "_id" : "Fluffy" }

इस बार हमें 6 के बजाय केवल 5 दस्तावेज़ मिले हैं, और केवल एक फ़्लफ़ी है।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ClusterControl रनटाइम कॉन्फ़िगरेशन विकल्प

  2. मैं एक डेटाबेस को एक MongoDB सर्वर से दूसरे में कैसे कॉपी करूं?

  3. MongoDB - एक दस्तावेज़ बनाएँ

  4. MongoDB जावा ड्राइवर के लिए लॉगिंग कॉन्फ़िगर करें

  5. किसी अन्य फ़ील्ड के मान का उपयोग करके MongoDB फ़ील्ड को अपडेट करें