文件DB - ST_DISTANCE

时间:2016-05-16 19:43:21

标签: azure-cosmosdb

查询会不会像

SELECT TOP 1 * ST_DISTANCE etc 

或更具体地说

SELECT TOP 1 * FROM c WHERE ST_DISTANCE(c.AssetLocation, { 'type': 'Point', 'coordinates': [115.58, 21.84] }) < 49999

返回最近的对象,如果没有,我怎么能按距离排序?

谢谢,

伊恩

1 个答案:

答案 0 :(得分:2)

DocumentDB本身不支持使用Geo-Spatial索引的最近或ORDER BY。

ORDER BY的最佳方法是在查询中投射(SELECT)距离,并在客户端或通过存储过程对其进行排序(减少多次往返的延迟成本)。

对于大型数据集,您可以通过在距离较小的距离上添加过滤器(WHERE)来优化最近的数据,并迭代/逐步增加距离值,直到找到第一个点。