我有一份与员工角色或名称相关的文件。这是文档结构。
{
"_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”工作的员工总数或简单的单词计算“员工”字段中元素的数量,其中'role_title':'Carpenter'。
我已经编写了此查询,但它显示了该集合的所有文档中的员工总数。
db.employee_role.aggregate(
{
$project: {
count: { $size:"$employees" }
}
}
)
答案 0 :(得分:3)
您必须改为使用$group
:
db.employee_role.aggregate(
{
$group: {
_id: "$role_title",
total: { $sum: { $size:"$employees" } }
}
}
)
按role_title
分组,然后添加员工人数。
答案 1 :(得分:2)
你可以用这个:
db.employee_role.aggregate(
[
{
$match: { role_title: "Carpenter" }
},
{
$group: {
_id: "$role_title",
total: { $sum: { $size: "$employees"} }
}
}
]
)