作者回复: 对的。 $lte: 小于等于。所以是女员工数量等于或少于10的部门
作者回复: 如果是无条件全表count,这个很快因为是实时计数的。
带条件count取决于:1) 是否用到索引 2)你的数据是否都在内存 3)你的存储IO是否够快 - SSD vs SAS vs SATA 有很大差别
通常来说这种操作会需要几十秒到分钟级如果没有优化。
作者回复: MongoDB企业版中有支持SQL方式查询的工具。
作者回复: 没有sumif这个keyword,但是可以实现类似的事情,下面这个例子是只把>=10 的$a字段的值相加求和:
db.collection.aggregate([{
$group: {
_id: null,
total: {
$sum: {
$cond: [{ $gte: ["$a", 10] },
"$a",
0
]
}
}
}
}])
作者回复: 第一个match是过滤原始集合的数据。第二个是针对group之后的结果再次过滤掉员工数量大于等于10的,只保留小于10个员工的部门。 第二个match没法放到前面,因为emp_qty在原始集合里不存在,必须等group之后才可以。
emp_qty: {$sum: 1}的意思是对group里面的每一条数据,值加1。 如果加2,自然结果就是两倍
作者回复: first_name要加美元符号,可以理解那是个变量, 实际的值要通过替换 first_name在文档中的具体值。
find()操作里面的用到的first_name只是个key。