use*_*513 3 javascript mongoose mongodb node.js mongodb-query
我正在尝试计算distinct(not unique)或Emp No相同department,但出现错误
查询失败:未知组运算符\'$group\'
\n\n这是我的代码\n https://mongoplayground.net/p/UvYF9NB7vZx
\n\ndb.collection.aggregate([\n {\n $group: {\n _id: "$Department",\n total: {\n "$group": {\n _id: "$Emp No"\n }\n }\n }\n }\n])\nRun Code Online (Sandbox Code Playgroud)\n\n预期产出
\n\n[\n {\n "_id": "HUAWEI\xe2\x80\x9d,\n\xe2\x80\x9ctotal\xe2\x80\x9d:1\n },\n {\n "_id": "THBS\xe2\x80\x9d,\n\xe2\x80\x9ctotal\xe2\x80\x9d:2\n }\n]\nRun Code Online (Sandbox Code Playgroud)\n\nTHBS有两个不同的Emp No A10088P2C和A20088P2C
HUAWEI只有一个Emp No A1016OBW
所以,$group是Pipeline阶段,只能在上层使用。
但对于您所需的输出,我相信有很多方法,我们也可以这样做:
db.collection.aggregate([
{
$group: {
_id: {
dept: "$Department",
emp: "$Emp No"
},
total: {
"$sum": 1
}
}
},
{
$group: {
_id: "$_id.dept",
total: {
"$sum": 1
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
Department在这里,在第一阶段,我们将及其分组Emp No,并且我们还计算Emp No每个部门中有多少人。[此计数您可以删除,因为我们没有使用它。]
此阶段的结果将是:
[
{
"_id": {
"dept": "THBS",
"emp": "A10088P2C"
},
"total": 2
},
{
"_id": {
"dept": "THBS",
"emp": "A20088P2C"
},
"total": 1
},
{
"_id": {
"dept": "HUAWEI",
"emp": "A1016OBW"
},
"total": 3
}
]
Run Code Online (Sandbox Code Playgroud)
接下来,在这部分数据之上,我再次与部门分组。进入$_id.dept,并以相同的方式进行计数,这会以您所需的格式给出结果。
[
{
"_id": "HUAWEI",
"total": 1
},
{
"_id": "THBS",
"total": 2
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10676 次 |
| 最近记录: |