我正在计算我的车队的使用率,计算公式是(以秒计的行车时间+以秒计的空转时间)/ [(一天的总秒数)* 100,即864]。
这是我当前适用于time_moving
的聚合管道。如何在其中包含time_idling
?time_moving
和time_idling
在同一模式中都可用。
{"$group": {
"_id": {
"customer": "$customer",
"date": "$date"
},
"percentage": {
"$avg": {"$divide": ["$time_moving", 864]}
}
}}
数据集(两个客户,C1和C2,在两天d1和d2上各自具有两辆车v1和v2的车队):
customer date time_moving time_idling vehicle
c1 d1 8200 400 v1
c1 d1 28200 0 v2
c2 d1 6400 800 v1
c2 d1 19900 100 v2
c1 d2 65500 500 v1
c1 d2 9800 100 v2
c2 d2 55000 200 v1
c2 d2 13000 200 v2
样本输出(或具有相同数据点的不同结构输出):
{ "_id" : { "customer" : "c1", "date" : "d1" }, "percentage" : 42.59... }
{ "_id" : { "customer" : "c1", "date" : "d2" }, "percentage" : 87.84... }
{ "_id" : { "customer" : "c2", "date" : "d1" }, "percentage" : 31.48... }
{ "_id" : { "customer" : "c2", "date" : "d2" }, "percentage" : 79.16... }
2条答案
按热度按时间liwlm1x91#
尝试以下聚合:
您可以使用
$sum
获取每组的所有time_moving
和time_idling
,然后使用$divide
将该值除以秒数。ubbxdtey2#
https://mongoplayground.net/p/mhkW0LlTcI7