2013-02-08 15 views
22

मेरे पास एक मोंगो संग्रह है, और मुझे इस संग्रह में दस्तावेजों को खोजने की ज़रूरत है, जिसमें फ़ील्ड नाम और एड्रेस बराबर हैं।एक ही क्षेत्र के साथ mongo दस्तावेज़ों को कैसे खोजें

मैं एक बहुत खोज की है, मैं केवल MongoDb query condition on comparing 2 fields और MongoDB: Unique and sparse compound indexes with sparse values मिल सकता है, लेकिन इन सवालों में वे दस्तावेजों की तलाश में हैं जो क्षेत्र एक = क्षेत्र ख में, लेकिन मैं document1.a == document2.a

खोजने की जरूरत है
+1

आप कैसे समझ क्या 'document2' है? क्या यह सभी डुप्लिकेट ढूंढने का मामला है? – Sammaye

+0

तो आप डुप्लिकेट ढूंढना चाहते हैं? – Philipp

उत्तर

71

आप Aggregation Framework और $group का उपयोग कर डुप्लिकेट पा सकते हैं।

उदाहरण डेटा की स्थापना:

// Batch insert some test data 
db.mycollection.insert([ 
    {a:1, b:2, c:3}, 
    {a:1, b:2, c:4}, 
    {a:0, b:2, c:3}, 
    {a:3, b:2, c:4} 
]) 

एकत्रीकरण क्वेरी:

db.mycollection.aggregate(
    { $group: { 
     // Group by fields to match on (a,b) 
     _id: { a: "$a", b: "$b" }, 

     // Count number of matching docs for the group 
     count: { $sum: 1 }, 

     // Save the _id for matching docs 
     docs: { $push: "$_id" } 
    }}, 

    // Limit results to duplicates (more than 1 match) 
    { $match: { 
     count: { $gt : 1 } 
    }} 
) 

उदाहरण आउटपुट:

{ 
    "result" : [ 
     { 
      "_id" : { 
       "a" : 1, 
       "b" : 2 
      }, 
      "count" : 2, 
      "docs" : [ 
       ObjectId("5162b2e7d650a687b2154232"), 
       ObjectId("5162b2e7d650a687b2154233") 
      ] 
     } 
    ], 
    "ok" : 1 
} 
+2

+1 बहुत अच्छा धन्यवाद बहुत धन्यवाद (Mongovue उपयोगकर्ताओं के लिए टिप्पणियां हटाएं //) – JPBlanc

संबंधित मुद्दे