从猫鼬聚合管道中的数组数组中获取单个数组
Posted
技术标签:
【中文标题】从猫鼬聚合管道中的数组数组中获取单个数组【英文标题】:Get single array from array of array in mongoose aggregate pipeline 【发布时间】:2021-04-15 15:21:18 【问题描述】:我有一个这样的集合(我从上一个管道条件中得到的):
[
_id:"1","field":[...obj1,...obj2],
_id:"2","field":[...obj3,...obj1],
_id:"3","field":[...obj4,...obj5],
_id:"4","field":[...obj1,...obj2],
]
我想在管道中添加更多条件来获取:
[...obj1,...obj2,...obj3,...obj4,...obj5]
顺序无关紧要,但我想要来自field
的所有对象。我是 mongo 和 mongoose 的新手,所以我不知道哪个聚合属性可以在这里工作。
请帮助我,我认为这是一项简单的任务,但由于缺乏知识,我无法做到。
【问题讨论】:
【参考方案1】: $unwind 解构field
数组,
$replaceRoot 将 field
对象替换为根
$unwind: "$field" ,
$replaceRoot: newRoot: "$field"
Playground
对于独特的对象,在$unwind
阶段之后尝试$group
阶段,
$group:
_id: "$field.name",
field: $first: "$field"
,
Playground
【讨论】:
不要为投票而烦恼,只需按照how-to-ask问题的说明进行操作, 实际上我也只想要使用 $group 和 $addToSet 实现的唯一对象(如示例中所示)。我希望您将使用此更新答案,以便其他人也可以得到帮助:)以上是关于从猫鼬聚合管道中的数组数组中获取单个数组的主要内容,如果未能解决你的问题,请参考以下文章