mongo db - 将值投影到向量中

mongo db - project values into vectors

我想将多个文档的值合并为一个文档。

原始文件:

{'a': 1, 'b': 2}

{'a': 100, 'b': 200}

期望的输出:

{'a': [1, 100], 'b': [2, 200]}

管道 group\project 可以帮助我吗?

您需要使用 $objectToArray and $$ROOTvariable. Then you can run $group twice in order to get single document containing all the arrays. In the last step you can run $replaceRoot with $arrayToObject 将您的文档转换为数组,以获得 a,b.. 作为您的文档键。

db.collection.aggregate([
    {
        $project: {
            _id: 0
        }
    },
    {
        $project: {
            data: { $objectToArray: "$$ROOT" }
        }
    },
    { $unwind: "$data" },
    {
        $group: {
            _id: "$data.k",
            vals: { $push: "$data.v" }
        }
    },
    {
        $group: {
            _id: null,
            aggregates: { $push: { k: "$_id", v: "$vals" } }
        }
    },
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: "$aggregates" }
        }
    }
])

Mongo Playground