gpt4 book ai didi

mongodb - 在 mongodb 聚合框架中展开字典值

转载 作者:可可西里 更新时间:2023-11-01 10:08:59 29 4
gpt4 key购买 nike

我需要从 mongodb 中现有的单个文档创建一些图。我只能使用 mongodb 聚合框架(例如,我不能只将文档拉入 python 并在那里使用它)。我正在使用元数据库的查询生成器,所以我在这方面受到限制。

为此,我首先使用一些 $match 查询来识别我需要查看的文档(这些是预定义的和静态的)。在 $match 阶段之后,我剩下一个具有以下结构的文档(没关系)。

{
"id": 1,
"locs": {
"a":1,
"b":2,
"c":3
}
}

我需要把这个结构改成这样:

[{"a":1}, {"b":2}, {"c":3"}]

或任何其他允许我根据结构创建饼图的形式。

谢谢!

最佳答案

您可以使用 $objectToArraylocs 对象转换为数组.现在$unwind locs 数组拆分为多个文档。使用 $group$push累加器将拆分后的数据重新变成kv格式。最后使用 $replaceRoot使用最后的 data 字段将其移动到 $$ROOT 位置。

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

关于mongodb - 在 mongodb 聚合框架中展开字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53416040/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com