mongodb - 计算子文档数组中的唯一元素

标签 mongodb aggregation-framework

<分区>

我有一个包含名称数组的子文档。我想要集合中唯一名称的数量。文档看起来像:

{name: "salesman",
 people: [{name: "Joe"}, {name: "Brian"}]}

我已经跑了:

db.jobs.aggregate([
  {$unwind: "$job.people"},
  {$group: {_id: "$job.people.name"}},
  {$group: {_id: null, total: {$sum: 1}}}
]);

这似乎可行,但由于数据库中有很多唯一名称,我没有很好的方法来验证它是否正确,所以我想我会在这里检查。

是否有一种首选方法来计算子文档数组中唯一项的数量?

最佳答案

另一种方法是使用 distinct函数获取嵌入的 name 字段的不同值的数组,然后检查其长度。

在外壳中:

db.jobs.distinct('job.people.name').length

假设您在代码中显示的 job 子文档级别实际上存在,但您的示例文档中没有。否则它只是 'people.name'

关于mongodb - 计算子文档数组中的唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040850/

相关文章:

mongodb - Mongo Docker 未创建用户

mongodb - 将两个字段合并到一个数组中

mongodb - $group by 8 条记录并进行聚合

mongodb - Mongo mongod init.d 脚本在 CentOS 上不起作用

java - MongoDB 结果集在执行查询后被修改

mysql - 有限获取所需文件

javascript - 使用 mongodb 聚合查询获取子文档中 sibling 的数量

java - Spring mongo 存储库切片

mongodb - Mongo Query - 过滤嵌套数组并返回不包含特定字段的文档

arrays - $in 需要一个数组作为第二个参数,找到 : missing