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

MongoDB - групов съставен ключ с вложени полета

Трябва първо да приложите $unwind оператор на всички масиви, така че да можете да правите изчисленията за агрегиране с $group оператор по-късно в етапите на тръбопровода. В крайна сметка ще получите конвейер за агрегиране като този:

db.testing.aggregate([
    { "$unwind": "$Event_types" },
    { "$unwind": "$Event_types.events" },
    { "$unwind": "$Event_types.events.by" },
    { "$unwind": "$Event_types.events.by.countArray" },
    {
        "$group": {
            "_id": {
                "type": "$Event_types.type",
                "name": "$Event_types.events.eventName",
                "siteName": "$Event_types.events.by.siteName"
            },
            "total": { 
                "$sum": "$Event_types.events.by.countArray.value"
            }
        }
    },
    {
        "$project": {
            "_id": 0,
            "type": "$_id.type",
            "name": "$_id.name",
            "siteName": "$_id.siteName",
            "total": 1
        }
    }
]);

Изход

/* 1 */
{
    "result" : [ 
        {
            "total" : 90,
            "type" : "Party",
            "name" : "After Party",
            "siteName" : "PostParty"
        }, 
        {
            "total" : 40,
            "type" : "Party",
            "name" : "After Party",
            "siteName" : "club8"
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. сортиране по стойност на вграден обект в Mongodb

  2. SailsJS:Вземете Resonse на Ajax-форма на SailsJS в изпратената функция

  3. Как мога да обещая собствения Javascript драйвер на MongoDB, използвайки bluebird?

  4. Как да настроя MongoDB Change Stream „OperationType“ в C# драйвера?

  5. Mongoengine е много бавен при големи документи в сравнение с естественото използване на pymongo