gpt4 book ai didi

mongodb - $setUnion 合并来自多个文档 MongoDB 的数组

转载 作者:可可西里 更新时间:2023-11-01 09:56:23 26 4
gpt4 key购买 nike

我在一个集合中有如下文档:

{ _id : 1 , data : [7,4,0] }
{ _id : 2 , data : [4,5,6] }
{ _id : 3 , data : [6,7,8] }

我想合并来自两个或多个文档的 data 数组。

我用来查找 id 1 和 2 的 data 数组并集的查询是:

db.coll.aggregate(
{
$match : {
_id: { $in: [1, 2] }
}
},
{
$group: {
_id: 0,
s0: { $first: "$data"},
s1: { $first: "$data"}
}
},
{
$project: {
_id: 0,
ans: { $setUnion: [ "$s0","$s1"]}
}
}
).pretty()

但是查询结果是:

{7, 5, 0}

这似乎只是id 1的数据。

How to achieve the union between two or more documents on same array field?

附言:我使用的是 MongoDB 3.4

最佳答案

要获得更高效的查询,请使用 $reduce 运算符来展平数组。这将允许您连接任意数量的数组,因此不仅仅是对文档 1 和 2 中的两个数组进行并集,这也适用于其他数组。

考虑运行以下聚合操作:

db.coll.aggregate([
{ "$match": { "_id": { "$in": [1, 2] } } },
{
"$group": {
"_id": 0,
"data": { "$push": "$data" }
}
},
{
"$project": {
"data": {
"$reduce": {
"input": "$data",
"initialValue": [],
"in": { "$setUnion": ["$$value", "$$this"] }
}
}
}
}
])

示例输出

{
"_id" : 0,
"data" : [ 0, 4, 5, 6, 7 ]
}

关于mongodb - $setUnion 合并来自多个文档 MongoDB 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42291965/

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