如何计算每个用户按星期计算的总小时数以及从星期五到星期四的周开始。
记录
{
"_id" : ObjectId("5a69cd076b2beec65fa900e9"),
"clock_date" : ISODate("2018-01-13T00:00:00.000Z"),
"clock_in_time" : "10:40:53",
"clock_out_time" : "12:40:53",
},
{
"_id" : ObjectId("5a69cd076b2beec65fa900e9"),
"clock_date" : ISODate("2018-01-12T00:00:00.000Z"),
"clock_in_time" : "10:00:53",
"clock_out_time" : "10:40:53",
},
{
"_id" : ObjectId("5a69cd076b2beec65fa900e9"),
"clock_date" : ISODate("2018-01-20T00:00:00.000Z"),
"clock_in_time" : "10:20:00",
"clock_out_time" : "12:40:53",
},
{
"_id" : ObjectId("5a69cd076b2beec65fa900e9"),
"clock_date" : ISODate("2018-01-21T00:00:00.000Z"),
"clock_in_time" : "10:40:53",
"clock_out_time" : "11:40:53",
},
结果
{
week:'Jan 05, 2018 to Jan 11, 2018'
totalhourse : 4
},
{
week:'Jan 12, 2018 to Jan 18, 2018'
totalhourse : 2:23
},
。 。 。 。
答案 0 :(得分:0)
总结这个模式的总小时数将是艰难的,我们应该进行大量的计算,因为你已经捕获了时间和超时字符串。为了找到差异,我们需要将hours:minutes:seconds
分开,然后我们必须找到差异。
"clock_in_time" : "10:40:53",
"clock_out_time" : "12:40:53",
或者,您可以修改架构以将时间和时间捕获为带时间戳的日期。
"clock_in_time" : ISODate("2018-01-13T10:40:53.123+05:30"),
"clock_out_time" : ISODate("2018-01-13T12:40:53.121+05:30"),
如果完成此修改,则可以使用聚合管道来获得所需的结果
首先在聚合管道中
请注意,此查询一次只能给您一周的结果
参考文献: