首页 > 解决方案 > 位置数据上的 MongoDB 聚合:如果没有移动,则跳过文档/行

问题描述

我有如下抽样的数据。

我想从 MongoDB 查询位置数据并跳过没有发生移动的行(或在我的情况下的文档)。我不能按位置(经度和纬度)分组,因为一个位置可以多次用作起点/终点。

基本上: $skip 如果 lat 和 lon 与文档中的时间戳相同,时间戳早于当前时间戳。

在示例中,我想跳过第二个和第四个文档。

我认为在聚合中使用 $skip 和 $cond 或 $lookup 操作应该可以实现。

提前致谢!

  {
    "_id": {"$oid": "5ee4dbe8d30bb8f72598731a"},
    "vehicle": "CF729EE12AA98C3673266DF965FD89CB4C8D2E84",
    "lat": 52.51312,
    "lon": 13.317027,
    "timestamp": {"$date": "2020-06-10T11:10:48.040Z"}
  },
  {
    "_id": {"$oid": "5ee4dbe8d30bb8f725987c24"},
    "vehicle": "CF729EE12AA98C3673266DF965FD89CB4C8D2E84",
    "lat": 52.51312,
    "lon": 13.317027,
    "timestamp": {"$date": "2020-06-10T11:16:22.662Z"}
  },
  {
    "_id": {"$oid": "5ee4dc21d30bb8f725a33905"},
    "vehicle": "CF729EE12AA98C3673266DF965FD89CB4C8D2E84",
    "lat": 52.53564,
    "lon": 13.42169,
    "timestamp": {"$date": "2020-06-11T15:57:50.290Z"}
  },
  {
    "_id": {"$oid": "5ee4dc21d30bb8f725a3421d"},
    "vehicle": "CF729EE12AA98C3673266DF965FD89CB4C8D2E84",
    "lat": 52.53564,
    "lon": 13.42169,
    "timestamp": {"$date": "2020-06-11T16:03:23.421Z"}
  }
]```

标签: mongodb-queryaggregation-framework

解决方案


推荐阅读