2017-09-24 50 views
0

我有一篇文章存在一個數組字段 - 主題例如如何平坦嵌套數組addToSet

"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

你的mongod版本是什麼? – styvane

+0

版本爲3.2 – zhuguowei

回答

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"} 
    }} 
] 

開卷返回不同的文檔,以供數組中的每個元素,所以展開兩次將允許您扁平化陣列的整個陣列。

+0

最後一組中的一些繁瑣和總計post_count導致錯誤的post_count,例如,作者A只有一個帖子,但主題:[t1,t2,t3]以你的方式post_count將是3 – zhuguowei

+0

你是對的,我編輯了我的答案;) –

相關問題