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

问题描述

我有这样的数据结构:

enter image description here

红色顶点在位置 青色顶点是BIKE 粉色顶点是USER

GRAPH TD

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

其中BIKE是与许多位置相关联的一个

每个位置都具有经纬度属性和时间戳记

我想从坐标对中找到所有位置接近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)}

但是此查询将返回其自行车的所有位置,我想要最后一个位置(时间最近)和所属的自行车

感谢您的帮助

解决方法

您需要类似的东西:

(List[Double],List[Double],Double,Double) = (List(-28.92706839930671,70.0055196968918,97.18634024152067,-0.8977639173269137,-20.95631222378548),List(-2.1642508141664965,-49.26719368168469,-77.6449011447281,-92.11164347698504,39.31785782242422),8.387308243500957E10,0.95,0.1)

注意:您应该使用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} 而不是WITHIN

@Loki评论后

更新

NEAR