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

उन सरणियों वाले दस्तावेज़ खोजें जिनमें किसी विशेष फ़ील्ड वाला दस्तावेज़ हो

$where का इस्तेमाल करना ऑपरेटर।

db.collection.find(function() { 
    return this.docs.length === this.docs.filter(function(doc) {
        return typeof(doc.foo) !== "undefined" && doc.foo !== null ;}).length 
})

ऐसा करने का दूसरा तरीका दो प्रश्नों को चलाना है:एक _id . को पुनः प्राप्त करने के लिए उन सभी दस्तावेज़ों में से जो विशिष्ट () विधि:

var unwantedIds = db.collection.distinct( "_id", { "docs": { "$elemMatch": { "foo": { "$exists": false } } } } );

फिर $nin . का उपयोग करें ऑपरेटर उन सभी दस्तावेजों को वापस करने के लिए जो आपके मानदंडों से मेल खाते हैं।

db.collection.find({ "_id": { "$nin": unwantedIds } } )

आप <का भी इस्तेमाल कर सकते हैं कोड>.एग्रीगेट () विधि लेकिन यह केवल तभी काम करती है जब आप संस्करण 3.2 या नए पर हों क्योंकि आपको $फ़िल्टर

पाइपलाइन में पहला चरण $match है चरण जहाँ आप उन दस्तावेज़ों को फ़िल्टर करते हैं जहाँ "foo" फ़ील्ड अनुपस्थित है। यह उन दस्तावेजों की कुल संख्या को कम करता है जिन्हें पाइप के नीचे संसाधित किया जाएगा। अगला और आखिरी चरण है $redact मंच। इस चरण में आपको $size . का उपयोग करने की आवश्यकता है ऑपरेटर "दस्तावेज़" फ़ील्ड के आकार और उप-दस्तावेज़ों की सरणी के आकार को वापस करने के लिए जहां "foo" मौजूद है और उन सभी दस्तावेज़ों को वापस कर दें जहां दो मान बराबर हैं।

db.collection.aggregate([
    { "$match": { "docs.foo": { "$exists": true } } }, 
    { "$redact": { 
        "$cond": [ 
            { "$eq": [ 
                { "$size": "$docs" }, 
                { "$size":  { 
                    "$filter": { 
                        "input": "$docs", 
                        "as": "doc", 
                        "cond": { 
                            "$ne": [ 
                                { "$ifNull": [ "$$doc.foo", null ] },
                                null 
                            ] 
                        } 
                    }
                }}
            ]}, 
            "$$KEEP", 
            "$$PRUNE"
        ]
    }}
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं MongoDB के bsondump को JSON में बदलने के लिए पायथन का उपयोग कैसे कर सकता हूं?

  2. नेवला में कैसे छाँटें?

  3. मोंगोडीबी को मोबाइल या ब्राउज़र आधारित एप्लिकेशन से जोड़ना

  4. MongoDB का ISODate () बनाम UNIX टाइमस्टैम्प

  5. मैं ट्विटर के स्ट्रीमिंग एपीआई से ट्वीट्स का उपभोग कैसे कर सकता हूं और उन्हें मोंगोडब में स्टोर कर सकता हूं