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

Сумира всички стойности на едноименни полета на документи в колекция

Можете да се възползвате от $objectToArray и $arrayToObject оператори за динамично четене на вашите обектни ключове. За да се отървете от _id и name полета, които можете да $filter от $type .

db.collection.aggregate([
    {
        $project: {
            _id: 0,
            fields: {
                $filter: {
                    input: { $objectToArray: "$$ROOT" },
                    cond: { $eq: [ { $type: "$$this.v" }, "double" ] }
                }
            }
        }
    },
    {
        $unwind: "$fields"
    },
    {
        $group: {
            _id: "$fields.k",
            total: { $sum: "$fields.v" }
        }
    },
    {
        $group: {
            _id: null,
            aggregates: { $push: { k: "$_id", v: "$total" } }
        }
    },
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: "$aggregates" }
        }
    }
])

Mongo Playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Play-Framework 2.4.x, използван с MongoDB и Java 8

  2. Потребителското влизане не работи с node.js и mongoose

  3. Как да попълня връзка едно към много в mongoose с родителско препращане?

  4. В MongoDB, как да се извърши заявка въз основа на това дали едно поле на низ съдържа друго

  5. node-mongodb-native:Как мога да споделя db api обекта на обратното извикване на връзката чрез моето приложение