MongoDB:在嵌套数组中对值进行分组以获得计数

时间:2017-09-27 10:27:59

标签: arrays mongodb nested

我搜索过但找不到问题的答案。 我在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 [] ._ source.tags [])。也就是说,对于上面示例中的2个文档,列表将是: tag1:1 tag2:2 tag3:2 tag4:1

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您需要查看aggregation次查询。首先,您需要解开两个数组,然后只需对标记进行分组以获得计数

column.search(val).draw()

答案 1 :(得分:0)

使用投影和分组

db.mycollection.aggregate(
    [
        {
            $project: {
                _id:0,
                tag_count:{$size:"$Manual_Tags._source.tags"},
            }
        }, 
        {
            $group: {
                tag_total:{$sum:"$tag_count"},
            }
        }
    ]
)