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

$अनविंड के बिना सरणी के अंदर डुप्लिकेट खोजें

आप $range का इस्तेमाल कर सकते हैं 1 . से संख्याओं की सरणियाँ उत्पन्न करने के लिए करने के लिए n जहां n $size है का adds . फिर आप उन नंबरों के माध्यम से "लूप" कर सकते हैं और जांच सकते हैं कि क्या adds index . पर ($arrayElemAt ) index . से पहले कहीं मौजूद है यदि हां तो इसे डुप्लीकेट माना जाना चाहिए। आप $indexOfArray का उपयोग कर सकते हैं यह जाँचने के लिए कि तत्व 0 और index . निर्दिष्ट करने वाले सरणी में मौजूद है या नहीं खोज श्रेणी के रूप में।

फिर आपको बस $project . का उपयोग करने की आवश्यकता है और $map इंडेक्स को वास्तविक तत्वों से बदलने के लिए। आप $setUnion भी जोड़ सकते हैं अंतिम परिणाम सेट में डुप्लिकेट डुप्लिकेट से बचने के लिए।

db.users.aggregate([
    {
        $addFields: {
            duplicates: {
                $filter: {
                    input: { $range: [ 1, { $size: "$adds" } ] },
                    as: "index",
                    cond: {
                        $ne: [ { $indexOfArray: [ "$adds", { $arrayElemAt: [ "$adds", "$$index" ]  }, 0, "$$index" ] }, -1 ]
                    }
                }
            }
        }
    },
    {
        $project: {
            _id: 1,
            adds: {
                $setUnion: [ { $map: { input: "$duplicates", as: "d", in: { $arrayElemAt: [ "$adds", "$$d" ] } } }, [] ]
            }
        }
    }
])

प्रिंट:

{ "_id" : 1, "adds" : [ "111" ] }
{ "_id" : 2, "adds" : [ "555" ] }
{ "_id" : 3, "adds" : [ "888" ] }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. NodeJS का उपयोग करके सुपरयुसर के रूप में किसी अन्य MongoDB डेटाबेस से कैसे कनेक्ट करें?

  2. नेवला स्कीमा संदर्भ और अपरिभाषित प्रकार 'ऑब्जेक्ट आईडी'

  3. सरणी तत्वों का समवर्ती अद्यतन जो MongoDB में एम्बेडेड दस्तावेज़ हैं

  4. दूरी कैसे प्राप्त करें - MongoDB टेम्प्लेट नियर फंक्शन

  5. mongoDB 3.2 में अद्वितीय अनुक्रमणिका शून्य मानों को अनदेखा कर रही है