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

MongoDB एकत्रीकरण में एक ऐडफ़िल्ल्ड ऑपरेशन के भीतर $count का उपयोग करना

कुल गणना हमेशा एक-दस्तावेज़ परिणाम होगी, इसलिए आपको की आवश्यकता होगी। $facet एकाधिक एकत्रीकरण पाइपलाइनों को चलाने के लिए और फिर परिणाम मर्ज करें। मान लें कि आपकी नियमित पाइपलाइन में सरल $project है और आप इसके परिणामों को $count . के साथ मर्ज करना चाहते हैं . आप नीचे एकत्रीकरण चला सकते हैं:

db.col.aggregate([
    {
        $facet: {
            totalCount: [
                { $count: "value" }
            ],
            pipelineResults: [
                {
                    $project: { _id: 1 } // your regular aggregation pipeline here 
                }
            ]
        }
    },
    {
        $unwind: "$pipelineResults"
    },
    {
        $unwind: "$totalCount"
    },
    {
        $replaceRoot: {
            newRoot: {
                $mergeObjects: [ "$pipelineResults", { totalCount: "$totalCount.value" } ]
            }
        }
    }
])

$facet . के बाद चरण आपको इस तरह का एकल दस्तावेज़ मिलेगा

{
    "totalCount" : [
        {
            "value" : 3
        }
    ],
    "pipelineResults" : [
        {
            "_id" : ObjectId("5b313241120e4bc08ce87e46")
        },
        //....
    ]
}

फिर आपको $unwind का इस्तेमाल करना होगा सरणियों को कई दस्तावेज़ों में बदलने के लिए और $replaceRoot $mergeObjects के साथ रूट स्तर पर नियमित पाइपलाइन परिणामों को बढ़ावा देने के लिए।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो फेंकने वाली टोपोलॉजी एक कनेक्शन के बाद नष्ट हो गई थी

  2. सर्वर से कनेक्ट नहीं हो सका 127.0.0.1:27017 कनेक्शन प्रयास विफल MongoDB

  3. उल्का सर्वर साइड पर मोंगो ग्रुप कैसे करें

  4. mongoDB में मल्टी मैचिंग फिल्टर काउंट कैसे प्राप्त करें?

  5. Node.js में सभी MongoDB डेटाबेस को कैसे सूचीबद्ध करें?