2017-09-27 79 views
0

我已經搜索,但無法找到我的問題的答案。 我有這種樣本結構集合MongoDB中:MongoDB:嵌套數組中的值得到計數

{ 
    "_id": ObjectID(1), 
    "Manual_Tags": [ 
    { 
     _source: { 
     tags: [ "tag1", "tag2", "tag3"] 
     other_values: ... 
     } 
    } 
    ] 
} 
{ 
    "_id": ObjectID(2), 
    "Manual_Tags": [ 
    { 
     _source: { 
     tags: [ "tag2", "tag3", "tag4"] 
     other_values: ... 
     } 
    } 
    ] 
} 

我需要知道實例數爲「標籤」現有的集合所有文件(Manual_Tags [] ._源中的每個值。標籤[])。也就是說,上述樣品中的2個文件,上市將是: 標籤1:1 標籤2:2 標籤3:2 TAG4:1

預先感謝任何幫助。

回答

0

您需要查看aggregation查詢。首先,您需要展開兩個陣列,然後僅對標籤進行分組以獲得計數。

db.collection.aggregate(
    {$unwind: '$Manual_Tags'}, 
    {$unwind: '$Manual_Tags._source.tags'}, 
    {$group: {_id: '$Manual_Tags._source.tags', count:{$sum:1}}} 
) 
+0

謝謝。這個簡單的查詢做到了。 – Alfredo