【发布时间】:2021-02-11 17:56:48
【问题描述】:
我正在尝试使用 Mongo 聚合框架按 id 对文档进行分组,然后将每个文档中的“事件”数组合并到一个数组中。我尝试过不同的组累加器; push、first、last 等。使用 push 会生成一个数组数组。但我想要一个包含所有事件对象的数组。 MongoDB 4.4
文件
{
_id: 123,
name: "John",
events: [
{
start: "2020-01-01",
end: "2020-01-01"
},
{
start: "2020-01-01",
end: "2020-01-01"
}
]
},
{
_id: 123,
name: "John",
events: [
{
start: "2020-01-21",
end: "2020-01-21"
},
]
},
{
_id: 456,
name: "Ben",
events: [
{
start: "2020-01-21",
end: "2020-01-21"
},
]
},
{
_id: 456,
name: "Ben",
events: [
{
start: "2020-02-01",
end: "2020-02-01"
},
]
},
我的组汇总
'$group': {
'_id': '$_id',
'resourceName': {
'$first': '$name',
},
'events': {
'$push': "$events"
}
}
期望的输出
[
{
_id: 123,
name: "John",
events: [
{
start: "2020-01-01",
end: "2020-01-01"
},
{
start: "2020-01-01",
end: "2020-01-01"
},
{
start: "2020-01-21",
end: "2020-01-21"
},
]
},
{
_id: 456,
name: "Ben",
events: [
{
start: "2020-02-01",
end: "2020-02-01"
},
{
start: "2020-01-21",
end: "2020-01-21"
},
]
},
]
【问题讨论】:
-
谢谢,但 concatArrays 将作为未知组运算符出现。
-
您的数据有重复的_id,无法插入。
标签: mongodb