我每 2-3 秒收集一次来自 gps 设备的数据记录,数据样本如下所示
如果在给定的日期时间考虑这些记录,则 时间差异 b.cretedon - a.cretedon => 类似地说 2 分钟 c.cretedon - b.cretedon = 3 分钟
如果给定时间是3分钟那么imei 223456..被认为有匹配的时差记录,否则从输出中删除。
我试过如下查询,但没有给出正确的结果
`collection
.aggregate([
{
$match: {
"createdon": // filter out all items that are inside a range
{$gte: start_dt, $lte: end_dt}
}
},
{
$group: {
_id: "$imei", max_time: {$max: "$createdon"}, min_time: {$min: "$createdon"}
}
},
{
$set: {
difference: {$divide: [{$subtract: ["$max_time", "$min_time"]}, 60 * 1000]}// get difference in minutes
}
},
{
$match: {// filter out all items that are having difference >= 3 min or any given time
difference: {$gte: minutes}
}
}
]);`
请求参数 start_dt= new Date('02-24-2023').getTime(), end_dt= new Date('02-25-2023').getTime() 和 time diff minutes = 3 ,结果我应该获取那些任何 2 个连续记录差异超过给定时间 3 分钟的所有 IMEIs