问题描述
我有这样的数据结构:
红色顶点在位置 青色顶点是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
。
更新:
NEAR