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

क्या मैं MongoDB में कुल क्वेरी में प्रत्येक के लिए आवेदन कर सकता हूं?

आप एकत्रीकरण पाइपलाइन के साथ ऐसा नहीं कर सकते। आपको समझना चाहिए कि MongoDB एकत्रीकरण संग्रह पर लागू विशेष ऑपरेटरों की एक श्रृंखला है। जब आप एक एकत्रीकरण पाइपलाइन निष्पादित करते हैं, तो MongoDB एक दूसरे में ऑपरेटरों को पाइप करता है यानी एक ऑपरेटर का आउटपुट निम्नलिखित ऑपरेटर का इनपुट बन जाता है। प्रत्येक ऑपरेटर का परिणाम दस्तावेज़ों का एक नया संग्रह होता है।

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

var collection = db.collection('member'), 
    pipeline = [
        { "$match": { createdDate: currentDate, country: 'BD' } },
        {
            "$group": {
                "_id": { "memberType": "$memberType", "country": "$country" },
                "memberCount": { 
                    "$sum": { "$cond":[ { "$gt": ["$numberOfInvitees", 0] }, 1, 0 ] } 
                },
                "sameCount": { "$sum": 1 } 
            }
        }
    ];

collection.aggregate(pipeline, function(err, result){
    if (err) throw err;
    console.log(result);
});

अपडेट करें

अपने प्रश्न में परिवर्तनों के लिए अनुवर्ती, निम्नलिखित एकत्रीकरण पाइपलाइन को चलाने से आपको वांछित परिणाम प्राप्त होंगे:

var collection = db.collection('member'), 
    pipeline = [   
        { "$match": { createdDate: currentDate, country: 'BD' } },
        {
            "$group": {
                "_id": { 
                    "memberType": "$memberType", 
                    "country": "$country" 
                },            
                "invitees":{ 
                    "$push":  {
                        "memberID": "$memberID",
                        "count": "$numberOfInvitees"
                    }
                },
                "inviteesList": { "$push": "$numberOfInvitees" },
                "memberCount": { "$sum": 1 } 
            }
        },
        { "$unwind": "$invitees" },
        { "$unwind": "$inviteesList" },
        { 
            "$group": {
                "_id": "$invitees.memberID",
                "sameInviteesCount": { 
                     "$sum": { 
                        "$cond": [ 
                            { "$eq": ["$inviteesList", "$invitees.count"] }, 
                            1, 0 
                        ] 
                    }
                },
                "lessInviteesCount": { 
                    "$sum": { 
                        "$cond":[ 
                            { "$lt": ["$inviteesList", "$invitees.count"] }, 
                            1, 0 
                        ] 
                    }
                },
                "memberCount": { "$first": "$memberCount" }
            }
        }
    ];

collection.aggregate(pipeline, function(err, result){
    if (err) throw err;
    console.log(result);
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक्सप्रेस और नेवला का उपयोग कर मौजूदा MongoDB दस्तावेज़ की सरणी के लिए प्रपत्र डेटा पोस्ट करें

  2. मोंगोडब पर केस-असंवेदनशील क्वेरी

  3. संदर्भ सरणी के साथ नेवला मॉडल स्कीमा:CastError:वस्तु के लिए कास्ट मूल्य के लिए विफल [वस्तु वस्तु]

  4. mongoimport के माध्यम से तिथि MongoDB में कनवर्ट करें

  5. MongoDB के साथ वृद्धिशील संख्याएँ बनाना