如何通过mongoDB聚合将数组转换为对象

时间:2019-12-26 08:07:18

标签: mongodb aggregate

使用MongoDB聚合查询,如何将一系列文档转换为单个文档。该数组可以包含N个文档。

之前

{
    "_id": "10217941",
    "data": [
    {
        "count": 2,
        "score": "0.5"
    },
    {
        "count": 6,
        "score": "0.3"
    },
    {
        "count": 5,
        "score": "0.8"
    }
    ]
}

之后

"_id": "10217941",
"0.3": 6,
"0.5": 2,
"0.8": 5

1 个答案:

答案 0 :(得分:1)

尝试一下:

db.collection.aggregate([
    {
        "$addFields": {
            "data": {
                "$arrayToObject": {
                    "$map": {
                        "input": "$data",
                        "as": "item",
                        "in": {
                            "k": "$$item.score",
                            "v": "$$item.count"
                        }
                    }
                }
            }
        }
    },
    {
        "$addFields": {
            "data._id": "$_id"
        }
    },
    {
        "$replaceRoot": {
            "newRoot": "$data"
        }
    }
]);