Kar*_*thi 6 mongodb aggregation-framework
我有交易表,由员工带来的假期填充.我需要帮助在mongodb中跟踪sql场景.
select employee,month,year,count(distinct (holiday_type) from
transactions group by employee,month,year
Run Code Online (Sandbox Code Playgroud)
我需要在mongodb中使用聚合,并且像这样创建了mongo查询,这给了我错误的解决方案
db.transactions.aggregate([
{ "$group": {
"_id": {
"Month": { "$month" : "$date" },
"Year": { "$year" : "$date" },
"employee" : "$employee",
"holiday_type" : "$holiday_type"
},
"Count_of_Transactions" : { "$sum" : 1 }
}}
]);
Run Code Online (Sandbox Code Playgroud)
我很困惑在mongodb中使用count distinct逻辑.任何建议都会有所帮助
部分方式,但你需要首先得到"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 }
);
Run Code Online (Sandbox Code Playgroud)
这是一般过程,因为SQL中的"distinct"本身就是一种分组操作.所以这是一个双重$group操作,以获得正确的结果.
| 归档时间: |
|
| 查看次数: |
6213 次 |
| 最近记录: |