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. DoctrineのMongodbODMで正規表現を使用するにはどうすればよいですか?

    2. Node.jsからMongoDBへ:日付で検索

    3. Mongo::OperationFailure-from_uriを使用する場合はログインする必要があります

    4. 配列のmongodbクエリサブセット