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

मोंगो एकत्रीकरण ढांचे का उपयोग करते हुए एकाधिक समूह संचालन

यह समझना महत्वपूर्ण है कि एग्रीगेट () के तर्क में ऑपरेशन एक पाइपलाइन . बनाते हैं . इसका मतलब है कि पाइपलाइन के किसी भी तत्व का इनपुट पाइपलाइन में पिछले तत्व द्वारा उत्पादित दस्तावेजों की धारा है।

आपके उदाहरण में, आपकी पहली क्वेरी इस तरह दिखने वाले दस्तावेज़ों की एक पाइपलाइन बनाती है:

{
    "_id" : 2,
    "avg_score" : 5.5
},
{
    "_id" : 1,
    "avg_score" : 4
}

इसका मतलब है कि पाइपलाइन का दूसरा तत्व दस्तावेजों की एक श्रृंखला देख रहा है जहां केवल कुंजी "_id" और "avg_score" हैं। कुंजियाँ "category_id" और "score" अब मौजूद नहीं हैं इस दस्तावेज़ स्ट्रीम में।

यदि आप इस स्ट्रीम पर और अधिक एकत्रीकरण करना चाहते हैं, तो आपको उन कुंजियों का उपयोग करना होगा जो इस चरण में पाइपलाइन में दिखाई देती हैं। चूंकि आप औसत को औसत करना चाहते हैं, आपको _id फ़ील्ड के लिए एक स्थिर मान डालने की आवश्यकता है, ताकि सभी इनपुट दस्तावेज़ एक ही परिणाम में समूहित हो जाएं।

निम्नलिखित कोड सही परिणाम देता है:

db.questions.aggregate(
    { $group : {
        _id : "$category_id",
        avg_score : { $avg : "$score" },
        }
    },
    { $group : {
        _id : "all",
        avg_score : { $avg : "$avg_score" },
        }
    }
);

जब चलाया जाता है, तो यह निम्न आउटपुट उत्पन्न करता है:

 {
    "result" : [
        {
        "_id" : "all",
        "avg_score" : 4.75
        }
    ],
    "ok" : 1
 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं MongoDB दस्तावेज़ फ़ील्ड को केवल तभी अपडेट करूं जब वे मौजूद न हों?

  2. MongoDB:प्रत्येक दस्तावेज़ को एक फ़ील्ड पर अपडेट करें

  3. MongoDB सूचकांक चौराहा

  4. त्रुटि:getaddrinfo ENOTFOUND नोडज में कॉल पाने के लिए

  5. मैं अपने डेटाबेस का MongoDB डंप कैसे बनाऊं?