sql >> Databáze >  >> NoSQL >> MongoDB

Sečtěte všechny hodnoty stejnojmenných polí dokumentů v kolekci

Můžete využít $objectToArray a $arrayToObject operátory pro dynamické čtení klíčů objektů. Chcete-li se zbavit _id a name pole můžete $filter od $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" }
        }
    }
])

Hřiště Mongo




  1. 5 způsobů, jak zkontrolovat velikost sbírky v MongoDB

  2. Fulltextové vyhledávání na MongoDB GridFS?

  3. PostgreSQL vs. MongoDB

  4. MongoDB Skupina agregace objednávek/prodejů Celková částka za měsíc + pole počtu