arrays - MongoDB:将嵌套数组中的值分组以获取计数

标签 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 个文档,列表将为: 标签1:1 标签2:2 标签3:2 标签4:1

预先感谢您的帮助。

最佳答案

您需要查看aggregation查询。首先,您需要展开两个数组,然后对标签进行分组以获取计数

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

关于arrays - MongoDB:将嵌套数组中的值分组以获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46445536/

相关文章:

c - 忽略c中命令行中的 '<'和 '>'

java - 如何在Java中定义矩阵中的元素,其中每个下一行元素都会增加某个值?

spring - 当事件配置文件为 "test"时使用嵌入式 MongoDB

templates - 未呈现基类模板的嵌套@ Html.DisplayFor(model => baseClass, "BaseClass")

regex - 如何使用 sed 删除嵌套括号内的多个括号?

sql - SQL Server 中的嵌套 select 语句

ios - 数组中的多个项目给出符合编码的错误

javascript - 如何在没有反斜杠的情况下将 javascript 值作为参数发送

node.js - 错误 :a hook ('orm' ) failed to load when lifting sails app using mongo DB

node.js - Mongodb查找然后更新