2017-09-27 75 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