MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Общи стойности от всички ключове в поддокумента

Няма начин в рамката за агрегиране на mongodb за третиране на akey вътре в документ като данни, които можете да изследвате или манипулирате. Заобиколно решение е да превърнете това, което използвате като ключове тук (напр. тип плод и име на магазин), в стойности като тази:

{
    "_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. Node js / MongoDB реплика набор масив в javascript

  2. Заявка за ограничение/отместване на мангуста и броене

  3. Използване на Mongo агрегиране за изчисляване на сумата от стойности

  4. Вземете конкретна част от документа

  5. как да изпълните командата mongo admin от java