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

उप-दस्तावेज़ में सभी कुंजियों से कुल मान

किसी दस्तावेज़ के अंदर akey का इलाज करने के लिए mongodb एकत्रीकरण ढांचे में कोई तरीका नहीं है क्योंकि आप जिस डेटा की जांच या हेरफेर कर सकते हैं। समाधान यह है कि आप जो भी उपयोग कर रहे हैं उसे यहां कुंजियों के रूप में (जैसे फलों का प्रकार और स्टोर का नाम) इस तरह के मानों में बदलना है:

{
    "_id" : "doc1",
    "stores":[
        {
            // store name is a value
            "name":"store_A",
            "inventory": [
            {
                // so is fruit type
                "type" : "apple",
                "count" : 50
            },
            {
                "type" : "orange",
                "count" : 20
            }
            ]
        },
        {
            "name": "store_B",
            "inventory": [
            {
                "type" : "orange",
                "count" : 15
            }
            ]
        }
    ]
}

यह आपको इन डेटा के साथ एकत्रीकरण में अधिक आसानी से काम करने की अनुमति देता है:

db.coll.aggregate([
    // split documents by store name
    {$unwind:"$stores"},
    // split documents further by fruit type
    {$unwind:"$stores.inventory"},
    // group documents together by store/fruit type, count quantities of fruit
    {$group:{"_id":{"store":"$stores.name", "fruit":"$stores.inventory.type"},
             "count":{$sum:"$stores.inventory.count"}}},
    // reformat the data to look more like your specification
    {$project:{
        "store":"$_id.store",
        "fruit":"$_id.fruit",
        "_id":0,
        "count":1}}])

आउटपुट इस तरह दिखता है:

{
    "result" : [
        {
            "count" : 15,
            "store" : "store_B",
            "fruit" : "apple"
        },
        {
            "count" : 15,
            "store" : "store_B",
            "fruit" : "orange"
        },
        {
            "count" : 30,
            "store" : "store_A",
            "fruit" : "orange"
        },
        {
            "count" : 50,
            "store" : "store_A",
            "fruit" : "apple"
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला के माध्यम से आइटम को मोंगो सरणी में पुश करें

  2. क्या एक Mongo $नियर रिटर्न दस्तावेज़ जिसके लिए मल्टीपॉइंट में कोई बिंदु सीमा के भीतर है?

  3. जावा प्ले 2.0 के साथ मोंगोडब डेटाबेस

  4. डॉक्टर सरणी में प्रत्येक तत्व को एक शर्त से मिलान करने के लिए mongodb क्वेरी

  5. दस्तावेज़ फ़ील्ड नाम '$' से शुरू नहीं हो सकते (खराब कुंजी:'$set')