gpt4 book ai didi

Mongodb计数与多个组字段不同

转载 作者:IT老高 更新时间:2023-10-28 13:26:11 25 4
gpt4 key购买 nike

我有一个由员工休假填充的事务表。我需要有关 mongodb 中以下 sql 场景的帮助。

select employee,month,year,count(distinct (holiday_type) from 
transactions group by employee,month,year

我需要在 mongodb 中使用聚合并像这样创建了 mongo 查询,这给了我错误的解决方案

db.transactions.aggregate([
{ "$group": {
"_id": {
"Month": { "$month" : "$date" },
"Year": { "$year" : "$date" },
"employee" : "$employee",
"holiday_type" : "$holiday_type"
},
"Count_of_Transactions" : { "$sum" : 1 }
}}
]);

我对在 mongodb 中使用计数不同的逻辑感到困惑。任何建议都会有所帮助

最佳答案

其中的一部分,但您需要先获取“holiday_type”的“不同”值,然后$group再次:

db.transactions.aggregate([
{ "$group": {
"_id": {
"employee" : "$employee",
"Month": { "$month" : "$date" },
"Year": { "$year" : "$date" },
"holiday_type" : "$holiday_type"
},
}},
{ "$group": {
"_id": {
"employee" : "$_id.employee",
"Month": "$_id.Month",
"Year": "$_id.Year"
},
"count": { "$sum": 1 }
}}
], { "allowDiskUse": true }
);

这是一般过程,因为 SQL 中的“distinct”本身就是一种分组操作。所以它是一个双$group操作才能得到正确的结果。

关于Mongodb计数与多个组字段不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23650136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com