gpt4 book ai didi

mongodb - 使用 MongoDB 聚合将来自不同属性的值合并到一个数组中

转载 作者:可可西里 更新时间:2023-11-01 10:31:06 27 4
gpt4 key购买 nike

我正在尝试找出是否会产生聚合运算符的组合,给定与此类似的输入文档:

[
{ field1: 1, field2: 2 },
{ field1: 2, field2: 3 }
]

在具有单个数组字段的输出文档中,其元素是字段的不同值 field1field2输入文档的数量,在此示例中:

{ result: [1,2,3] }

到目前为止我试过这些:

  • $addToSet , 但它似乎不支持多个参数,即不允许 $addToSet来自同一文档中的多个属性
  • $project到项目field1field2进入结果数组字段,然后我可以 $unwind然后 $addToSet ,但似乎也不支持将两个(或更多)属性投影到数组中。

最佳答案

您在 $addToSet 上走在了正确的轨道上,但正如您所注意到的,您无法从多个字段创建一个集合。您可以使用 $setUnion 组合多个数组运算符(operator)。您需要将额外的 $project 添加到聚合管道中。

使用 MongoDB 外壳:

db.coll.aggregate([
// group to create sets
{ "$group": {
"_id": null,
"a": { "$addToSet": "$a" },
"b": { "$addToSet": "$b" }
}},
// project to merge the arrays
{ "$project": {
"result": { "$setUnion": [ "$a", "$b" ] }
}}
]);

关于mongodb - 使用 MongoDB 聚合将来自不同属性的值合并到一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24969195/

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