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

नेवला - मापदंड द्वारा उप-दस्तावेज़ ढूँढना

आप $elemMatch . का उपयोग कर सकते हैं सबसे हाल के MongoDB संस्करणों में एक क्वेरी-प्रोजेक्शन ऑपरेटर के रूप में। मोंगो शेल से:

db.parents.find(
    {'children.age': {$gte: 18}},
    {children:{$elemMatch:{age: {$gte: 18}}}})

यह छोटे बच्चों के दस्तावेज़ों को children . से फ़िल्टर करता है सरणी:

{ "_id" : ..., "children" : [ { "name" : "Margaret", "age" : 20 } ] }
{ "_id" : ..., "children" : [ { "name" : "John", "age" : 22 } ] }

जैसा कि आप देख सकते हैं, बच्चों को अभी भी उनके मूल दस्तावेज़ों में समूहीकृत किया जाता है। MongoDB क्वेरीज़ संग्रह से दस्तावेज़ लौटाती हैं। आप एग्रीगेशन फ्रेमवर्क के $unwind . का उपयोग कर सकते हैं उन्हें अलग दस्तावेज़ों में विभाजित करने की विधि:

> db.parents.aggregate({
    $match: {'children.age': {$gte: 18}}
}, {
    $unwind: '$children'
}, {
    $match: {'children.age': {$gte: 18}}
}, {
    $project: {
        name: '$children.name',
        age:'$children.age'
    }
})
{
    "result" : [
        {
            "_id" : ObjectId("51a7bf04dacca8ba98434eb5"),
            "name" : "Margaret",
            "age" : 20
        },
        {
            "_id" : ObjectId("51a7bf04dacca8ba98434eb6"),
            "name" : "John",
            "age" : 22
        }
    ],
    "ok" : 1
}

मैं $match दोहराता हूं प्रदर्शन के लिए खंड:पहली बार इसके माध्यम से माता-पिता को नहीं . से हटा दिया जाता है कम से कम 18 साल के बच्चे, इसलिए $unwind केवल उपयोगी दस्तावेजों पर विचार करता है। दूसरा $match $unwind . को हटाता है आउटपुट जो मेल नहीं खाता, और $project उप-दस्तावेज़ों से बच्चों की जानकारी को शीर्ष स्तर तक फहराता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. किसी अन्य फ़ील्ड के मान का उपयोग करके MongoDB फ़ील्ड को अपडेट करें

  2. $graphLookup के लिए स्ट्रिंग से ऑब्जेक्ट आईडी का मिलान करना

  3. MongoError:प्रकार के साथ वस्तु से भू कुंजी नहीं निकाल सकते:बिंदु

  4. MongoDB प्रतिकृति सेट के लिए AppArmor को कैसे कॉन्फ़िगर करें?

  5. bson दस्तावेज़ कैसे बनाएं और पास करें - गो लैंग?