[英]Mongodb Sum field within date range and other filters
假设我的mongodb中具有以下文档结构:
{
_id: "tMSfNq9JR85XDaQe5"
customerid: "QDGvBQhS6vYgZtnRr"
employeeid: "QDGvBQhS6vYgZtnRr"
date: Sun Dec 07 2014 19:50:21 GMT+0800 (HKT)
projectid: "S83NEGHnrefvfASrf"
hours: 2
}
查询特定日期范围内的数据时,是否可以获取按雇员和日期分组的特定项目和客户的总工时,因此输出将例如:
{ "projectid":"XXX", "date":"Dec 1, 2014", "employeeid":"AAA", "totalHrs":"20" }
{ "projectid":"XXX", "date":"Dec 1, 2014", "employeeid":"BBB", "totalHrs":"11" }
{ "projectid":"XXX", "date":"Dec 2, 2014", "employeeid":"AAA", "totalHrs":"3" }
{ "projectid":"XXX", "date":"Dec 2, 2014", "employeeid":"BBB", "totalHrs":"5" }
{ "projectid":"XXX", "date":"Dec 2, 2014", "employeeid":"CCC", "totalHrs":"18" }
谢谢
嗨,据我所知,我认为您希望对projectid和employeeid进行分组,以查找所需的输出,因此在这种情况下,下面的汇总可能有效
db.collectionName.aggregate(
{"$group":{"_id":{"projectId":"$projectid","employeeId":"$employeeid","date":"$date"},
"totalHrs":{"$sum":"$hours"}}},
{"$project":{"projectid":"$_id.projectId",
"date":"$_id.date","employeeid":"$_id.employeeId",
"totalHrs":"$totalHrs",
"_id":0}}
)
您需要按projectid,date,employeeid分组
db.collectionname.aggregate({"$project":{"projectid":1,"date":1,"employeeid":1,"totalHrs":1}},
{"$group":{"_id":{"$projectId":"$projectid","date":"$date","employeeId":"$employeeid"},
"totalHrs":{"$sum":"$hours"}}})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.