【发布时间】:2022-02-08 11:12:20
【问题描述】:
谁能帮我在不使用 $unwind 或 $group stage 的情况下按key 对数据进行分组?我不想使用 $unwind 或 $group 阶段的原因是因为我希望能够在 updateMany(filter, pipeline) 操作中使用管道,所以我可以使用的阶段仅限于:$addFields (= $set) , $project (= $unset) 和 $replaceRoot (= $replaceWith)。
输入数据如下所示:
[
{
key: "alpha",
value: {
name: "foo",
},
},
{
key: "beta",
value: {
name: "bar",
},
},
{
key: "alpha",
value: {
name: "baz",
},
},
]
我想得到的结果:
[
{
key: "alpha",
values: [
{
name: "foo",
},
{
name: "baz",
},
],
},
{
key: "beta",
values: [
{
name: "bar",
},
],
},
]
我相信使用 $reduce 是可行的,但我是 mongodb 聚合的新手,所以我很难有条件地在数组中累积对象。
谢谢
【问题讨论】:
标签: mongodb aggregation-framework