Rom*_*kar 44
你可以使用$ addToSet来做到这一点:
db.users.aggregate([
{ $unwind: '$data' },
{ $group: { _id: '$_id', data: { $addToSet: '$data' } } }
]);
Run Code Online (Sandbox Code Playgroud)
如果没有看到您的实际查询,很难给出更具体的答案.
小智 25
你必须使用$ addToSet,但首先你必须按_id分组,因为如果你不这样做,你将在列表中的每个项目中获得一个元素.
想象一下集合帖子的文档如下:
{
body: "Lorem Ipsum...",
tags: ["stuff", "lorem", "lorem"],
author: "Enrique Coslado"
}
Run Code Online (Sandbox Code Playgroud)
想象一下,您想要计算每位作者最常用的标签.您可以像这样进行聚合查询:
db.posts.aggregate([
{$project: {
author: "$author",
tags: "$tags",
post_id: "$_id"
}},
{$unwind: "$tags"},
{$group: {
_id: "$post_id",
author: {$first: "$author"},
tags: {$addToSet: "$tags"}
}},
{$unwind: "$tags"},
{$group: {
_id: {
author: "$author",
tags: "$tags"
},
count: {$sum: 1}
}}
])
Run Code Online (Sandbox Code Playgroud)
这样你就会得到这样的文件:
{
_id: {
author: "Enrique Coslado",
tags: "lorem"
},
count: 1
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33263 次 |
最近记录: |