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

एक प्रमुख फ़ील्ड द्वारा MongoDB संग्रह में सभी डुप्लिकेट दस्तावेज़ खोजें

स्वीकृत उत्तर बड़े संग्रह पर बहुत धीमा है, और _id नहीं लौटाता है डुप्लिकेट रिकॉर्ड के s.

एकत्रीकरण बहुत तेज़ है और _id लौटा सकता है रों:

db.collection.aggregate([
  { $group: {
    _id: { name: "$name" },   // replace `name` here twice
    uniqueIds: { $addToSet: "$_id" },
    count: { $sum: 1 } 
  } }, 
  { $match: { 
    count: { $gte: 2 } 
  } },
  { $sort : { count : -1} },
  { $limit : 10 }
]);

एग्रीगेशन पाइपलाइन के पहले चरण में, $groupoperator name द्वारा दस्तावेज़ों को एकत्रित करता है uniqueIds . में फ़ील्ड और स्टोर करें प्रत्येक _id समूहीकृत रिकॉर्ड का मूल्य। $sum ऑपरेटर इसे पास किए गए फ़ील्ड के मानों को जोड़ता है, इस मामले में स्थिर 1 - इस प्रकार समूहबद्ध रिकॉर्ड की संख्या को count . में गिनना फ़ील्ड.

पाइपलाइन के दूसरे चरण में, हम count . के साथ दस्तावेज़ों को फ़िल्टर करने के लिए $match का उपयोग करते हैं कम से कम 2, यानी डुप्लीकेट।

फिर, हम सबसे अधिक बार होने वाले डुप्लिकेट को पहले सॉर्ट करते हैं, और परिणामों को शीर्ष 10 तक सीमित करते हैं।

यह क्वेरी $limit . तक आउटपुट होगी उनके _id . के साथ डुप्लीकेट नामों वाले रिकॉर्ड एस। उदाहरण के लिए:

{
  "_id" : {
    "name" : "Toothpick"
},
  "uniqueIds" : [
    "xzuzJd2qatfJCSvkN",
    "9bpewBsKbrGBQexv4",
    "fi3Gscg9M64BQdArv",
  ],
  "count" : 3
},
{
  "_id" : {
    "name" : "Broom"
  },
  "uniqueIds" : [
    "3vwny3YEj2qBsmmhA",
    "gJeWGcuX6Wk69oFYD"
  ],
  "count" : 2
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. उल्का MongoDB डेटाबेस कहाँ है?

  2. mongoDB जावा ड्राइवर लॉगिंग को अक्षम कैसे करें?

  3. मोंगोडीबी:कई मानदंडों के साथ ऐरे में मूल्य पाएं

  4. FilterDefinition<TDocument> को नियमित json mongo क्वेरी में अनुवाद करें जिसे मैं एक mongo shell में चला सकता हूँ

  5. एसएनएमपी के साथ क्लस्टर कंट्रोल को एकीकृत करना:भाग दो