Arangodb:按时间戳和坐标过滤的自行车

Arangodb:按时间戳和坐标过滤的自行车,arangodb,Arangodb,我的数据结构如下: 红色顶点是位置 青色顶点是自行车 粉红色顶点是用户的 GRAPH TD ((BIKE)) -- LOCATED -->((POSITION)) 其中自行车是一个与多个位置关联的自行车 每个位置都有纬度和经度属性以及时间戳 我想找到所有的自行车谁的位置是近40公里的坐标对,不超过48小时 到目前为止,我正在做的是: FOR pos IN NEAR(positions, 45.5063575, 9.24157653499384, 40, "distance

我的数据结构如下:

红色顶点是位置 青色顶点是自行车 粉红色顶点是用户的

GRAPH TD

((BIKE)) -- LOCATED -->((POSITION))

其中自行车是一个与多个位置关联的自行车

每个位置都有纬度和经度属性以及时间戳

我想找到所有的自行车谁的位置是近40公里的坐标对,不超过48小时

到目前为止,我正在做的是:

FOR pos IN NEAR(positions, 45.5063575, 9.24157653499384, 40, "distance")
        FILTER pos.timestamp >= DATE_SUBTRACT(DATE_NOW(), "PT48H")
        SORT pos.timestamp DESC, pos.distance DESC
        RETURN {'position': pos,'bike':(FOR bike IN OUTBOUND pos located RETURN  bike)}
但是这个查询返回了他们的自行车的所有位置,我想要最后一个位置(时间上最近的位置)和所属的自行车


感谢您的帮助

您需要这样的帮助:

FOR pos IN WITHIN(positions, 45.5063575, 9.24157653499384, 40, "distance")
  FILTER pos.timestamp >= DATE_SUBTRACT(DATE_NOW(), "PT48H")
  SORT pos.timestamp DESC
  FOR b IN OUTBOUND pos located
    COLLECT bike = b INTO bike_positions
    RETURN {'bike': bike, 'position': bike_positions[0].pos}
注意:您应该在中使用
,而不是在
附近使用

更新@Loki评论后的

FOR pos IN positions
  FILTER pos.timestamp >= DATE_SUBTRACT(DATE_NOW(), "PT200H") AND 
         GEO_DISTANCE([45.47942614827045, 9.24157653499384], pos.coordinates)
  SORT pos.timestamp DESC     
  FOR b IN OUTBOUND pos located
    COLLECT bike = b INTO bike_positions
    RETURN {'bike': bike, 'position': bike_positions[0].pos}

由于inthein已弃用(),我尝试使用DISTANCE()重写查询
对于pos IN positions FILTER pos.timestamp>=DATE_SUBTRACT(DATE_NOW(),“PT200H”)让d=DISTANCE(pos.coords.latitude,pos.coords.longitude,45.47942614827045,9.24157653499384)以新的表示法过滤d,可能使用GEO_距离和GEO索引更好。我将用这个例子更新我的答案