我有一个post doc存在一个数组字段 - 例如主题
"topics":['topic 1','topic 2']
现在我想按作者分组并获取作者帖子的所有主题,我使用addToSet
来实现它
{$group: {"_id":"$screen_name",post_count:{$sum:1}, "topics":{$addToSet:"$topics"} } }
,结果就像这样
"topics" : [ [ "topic 1","topic 2" ], [ "topic 3" ], [ "topic 4" ] ]
我想知道如何让它返回输出
"topics" : ["topic 1" ,"topic 2" , "topic 3","topic 4" ]
这是第一个输出。
答案 0 :(得分:0)
一种方法是放松两次并重新组合:
[
{$group: {"_id":"$screen_name",post_count:{$sum:1}, "topics":{$addToSet:"$topics"} } },
{$unwind: "$topics"},
{$unwind: "$topics"},
{$group : {
_id : "$_id",
post_count : {$first: "$post_count"},
topics : {$addToSet : "$topics"}
}}
]
Unwind为数组中的每个元素返回一个不同的文档,因此展开两次将允许您展平整个数组数组。