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

ऐसे दस्तावेज़ खोजें जिनके सरणी फ़ील्ड में किसी दिए गए सरणी के कम से कम n तत्व हों

मान लें कि हमारे संग्रह में निम्नलिखित दस्तावेज़ हैं:

{ "_id" : ObjectId("5759658e654456bf4a014d01"), "a" : [ 1, 3, 9, 2, 9, 0 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d02"), "a" : [ 0, 8, 1 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d03"), "a" : [ 0, 8, 432, 9, 34, -3 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d04"), "a" : [ 0, 0, 4, 3, 2, 7 ] }

और निम्नलिखित इनपुट सरणी और n = 2

var inputArray = [1, 3, 0];

हम उन दस्तावेज़ों को वापस कर सकते हैं जहां सरणी फ़ील्ड में एकत्रीकरण ढांचे का उपयोग करके किसी दिए गए सरणी के कम से कम n तत्व होते हैं।

$match केवल उन दस्तावेज़ों का चयन करता है जिनकी सरणी की लंबाई अधिक या बराबर होती है n . यह पाइपलाइन में संसाधित किए जाने वाले डेटा की मात्रा को कम करता है।

$redact पाइपलाइन ऑपरेटर $cond . का उपयोग करके तार्किक स्थिति प्रसंस्करण का उपयोग करता है ऑपरेटर और विशेष ऑपरेशन $$KEEP दस्तावेज़ को "रखने" के लिए जहाँ तार्किक स्थिति सही है या $$PRUNE दस्तावेज़ को "त्याग" करने के लिए जहां शर्त गलत है।

हमारे मामले में, शर्त $gte . है जो सच हो जाता है अगर $size दो सरणियों के प्रतिच्छेदन की, जिसकी गणना हम $setIntersection . का उपयोग करके करते हैं ऑपरेटर 2 . से बड़ा या बराबर है .

db.collection.aggregate(
    [ 
        { "$match": { "a.1": { "$exists": true } } }, 
        { "$redact": { 
            "$cond": [ 
                { "$gte": [ 
                    { "$size": { "$setIntersection": [ "$a", inputArray ] } }, 
                    2
                ]},
                "$$KEEP", 
                "$$PRUNE" 
            ]
        }}
    ]
)

जो उत्पादन करता है:

{ "_id" : ObjectId("5759658e654456bf4a014d01"), "a" : [ 1, 3, 9, 2, 9, 0 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d02"), "a" : [ 0, 8, 1 ] }
{ "_id" : ObjectId("5759658e654456bf4a014d04"), "a" : [ 0, 0, 4, 3, 2, 7 ] }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB मल्टीकी इंडेक्स और इंडेक्स इंटरसेक्शन बाउंड्स

  2. टार गज़िप मोंगो डंप MySQL की तरह

  3. MongoDB में एक बहु-भाषा टेक्स्ट इंडेक्स बनाएं

  4. MongoDB में अशक्त बनाम कुंजी संग्रहीत नहीं करना

  5. MongoDB में निगरानी करने के लिए मुख्य बातें