mongodb - 计算文档中数组内元素的总数 - MongoDB

标签 mongodb nosql

我有一份与员工角色或职务相关的文件。这是文档结构。

{
    "_id" : ObjectId("5660c2a5b6fcba2d47baa2d9"),
    "role_id" : 4,
    "role_title" : "Carpenter",
    "employees" : [ 
        {
            "$ref" : "employees",
            "$id" : 4,
            "$db" : "db_cw2"
        }, 
        {
            "$ref" : "employees",
            "$id" : 5,
            "$db" : "db_cw2"
        }
    ]
},

{
    "_id" : ObjectId("5660c2a5b6fcba2d47baa2d6"),
    "role_id" : 1,
    "role_title" : "Chief Executive",
    "employees" : [ 
        {
            "$ref" : "employees",
            "$id" : 1,
            "$db" : "db_cw2"
        }
    ]
}

我想编写一个查询来显示或计算作为“Carpenter”工作的员工总数或简单的单词计算“employees”字段中“role_title”:“Carpenter”的元素数量。

我写了这个查询,但它显示了集合中所有文档中的员工总数。

db.employee_role.aggregate(
   {
        $project: { 
            count: { $size:"$employees" }
        }
   }
)

最佳答案

您必须改用 $group:

db.employee_role.aggregate(
   {
        $group: {
            _id: "$role_title",
            total: { $sum: { $size:"$employees" } }
        }
   }
)

您按 role_title 分组,然后添加员 worker 数。

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

相关文章:

node.js - Mongoose 验证器

node.js - 同时填充多个字段

java - MongoDB Java驱动程序: distinct and iterative

node.js - 从 AWS dynamoDB 中的 JSON 数组中删除元素

Mongodb 查询(聚合框架)耗时极慢

mysql - 最适合高分榜的数据库类型

mongodb - Riak 是否推荐用于存储和流式传输大型二进制文件?

MongoDB 嵌套数组查询

spring - 我怎样才能哄 Spring Data 向我展示 mongo 的查询计划(又名 cursor.explain())

json - nginx日志解析工具