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

मोनोगोडब में फ़ील्ड नाम के साथ उत्पाद समूह की गणना कैसे करें?

आप $arrayToObject के उपयोग का लाभ उठा सकते हैं पाइपलाइनों की एक श्रृंखला के भीतर ऑपरेटर और एक अंतिम $replaceRoot कोड> वांछित परिणाम प्राप्त करने के लिए पाइपलाइन।

नोट :hubId पाइपलाइन संचालन के दौरान $arrayToObject<के रूप में एक स्ट्रिंग में कनवर्ट किया जाता है /कोड> यदि "कुंजी" मान एक स्ट्रिंग है तो ऑपरेटर अच्छी तरह से काम करता है। तो अगर hubId एक ObjectId है तो $toString जरूरत तब पड़ती है जब $arrayToObject लागू किया जाता है।

आपको निम्नलिखित समग्र पाइपलाइन चलाने की आवश्यकता होगी:

Product.aggregate([
    {  "$group": {
            "_id": {
                "hubId": "$hubId",
                "status": "$ProductStatus"
            },
            "count": { "$sum": 1 }
    } },
    { "$group": {
        "_id": "$_id.hubId",
        "counts": {
            "$push": {
                "k": "$_id.status",
                "v": "$count"
            }
        }
    } },
    { "$group": {
        "_id": null,
        "counts": {
            "$push": {
                "k": { "$toString": "$_id" },
                "v": "$counts"
            }
        }
    } },
    { "$addFields": {
        "counts": {
            "$map": {
                "input": "$counts",
                "in": {
                    "$mergeObjects": [
                        "$$this",
                        { "v":  { "$arrayToObject": "$$this.v" } }
                    ]
                }
            }
        }
        
    } },
    {  "$replaceRoot": {
        "newRoot": { "$arrayToObject": "$counts" }
    } }  
])

जो निम्नलिखित परिणाम दस्तावेज़ देता है:

{
    "xyz" : {
        "Delivered" : 1,
        "On the Way" : 1
    },
    "mlm" : {
        "On the Way" : 1,
        "Delivered" : 2
    },
    "yyy" : {
        "On the Way" : 1,
        "Delivered" : 1,
        "Cancelled" : 1
    }
}

यह निश्चित रूप से दूसरी स्थिति उत्पन्न नहीं करता है जिसमें शून्य गिनती है लेकिन समाधान एक अच्छा प्रारंभिक बिंदु हो सकता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. NODE.js और Express का उपयोग करके नेस्टेड सरणी में MongoDB डेटा कैसे पोस्ट करें

  2. पूर्णांक डालने का प्रयास करते समय MongoDB फ्लोट सम्मिलित करता है

  3. MongoDB:java.lang.IllegalStateException:राज्य होना चाहिए:खुला

  4. मोंगोडब में तिथि तुलना

  5. MongoDB इन्सर्ट/सेकंड को कैसे गति दें?