javascript - `$group` 按数组中的唯一项

标签 javascript mongodb mongoose

假设我们有这样的文档

[
 {tags: ['a', 'b', 'c']},
 {tags: ['b', 'c', 'd']}
]

然后我们如何计算每个标签的文档数,所以

[
 {_id: 'a', count: 1},
 {_id: 'b', count: 2},
 {_id: 'c', count: 2},
 {_id: 'd', count: 1}
]

因为在 $tags 上执行普通的 $group 会(当然)给出不同的结果。

最佳答案

我认为以下查询将为您提供结果。 $unwind 是这里的关键。

db.collection_name.aggregate( [ { $unwind : "$tags" }, 
       { $group : { _id :  "$tags", total : { $sum : 1 } } }] )

供引用 - https://docs.mongodb.org/manual/reference/operator/aggregation/unwind/

关于javascript - `$group` 按数组中的唯一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570359/

相关文章:

javascript - 使用ajax检索json数据的所有 'data'属性

javascript - 扩展 jQuery 单击处理程序(修补 $.fn.click 函数?)以检查条件

java - 以内存有效的方式计算 MongoDB(Java 驱动程序)中的唯一对象

node.js - 如何使用 Node JS 将 mongoDB 查询记录到终端

javascript - 如何在 jQuery 中获取 POST 变量

javascript - 无法获取 Stack Exchange 的 css ("left"帮助下拉 - 返回自动,需要 px

node.js - 带有 JWT 的 Facebook Passport

jquery - 如何在 jQuery 文件上传中上传所有文件时在服务器端使用停止事件

node.js - 如何在 Mongoose 中定义一个名为 "type"的键?

node.js - 如何将一个 Mongoose 模式导入到另一个模式?