我有一个 mongo 文档,其中一些寄存器按日期存储,例如以非常简化的方式:
{
"vehicleId" : "vehicle4",
"telemetryDate" : ISODate("2013-06-22T05:00:00Z"),
"alarmsTotal" : 9
}
{
"vehicleId" : "vehicle5",
"telemetryDate" : ISODate("2013-06-20T05:00:00Z"),
"alarmsTotal" : 2
}
我需要按 vhicleId 执行一个组,对警报总数求和。尽管如此,还是可以选择排除或不排除周末(周六、周日)。
我一直在用 Mongo 寻找这个问题的答案,但无济于事。我的查询,没有考虑到正常工作的排除周末是:
{
"aggregate":"telemetrySummary",
"pipeline":[
{
"$match":{
"telemetryDate":{
"$gte":{
"$date":"2013-06-20T05:00:00.000Z"
},
"$lte":{
"$date":"2013-06-24T05:00:00.000Z"
}
}
}
},
{
"$group":{
"_id":{
"vehicleId":"$vehicleId"
},
"alarms":{
"$sum":"$alarmsTotal"
}
}
}
]
}
我需要排除 mongo 运算符 $dayOfWeek 为 1(星期日)和 7(星期日)的值。我尝试了许多查询,其中一个合乎逻辑的查询是:
{
"aggregate":"telemetrySummary",
"pipeline":[
{
"$match":{
"telemetryDate":{
"$gte":{
"$date":"2013-06-20T05:00:00.000Z"
},
"$lte":{
"$date":"2013-06-24T05:00:00.000Z"
}
},
"{ \"$dayOfWeek\" : \"$telemetryDate\"}":{
"$in":[2,3,4,5,6]
}
}
},
{
"$group":{
"_id":{
"vehicleId":"$vehicleId"
},
"alarms":{
"$sum":"$alarmsTotal"
}
}
}
]
}
我认为我真正的问题基本上是我不知道如何将不可分组变量上的 $dayOfWeek 操作作为 telemetryDate 存储到我可以与 $in 运算符进行比较的 day 变量中。
感谢您阅读并希望找到一些指导:)