DocumentDB:ST_DISTANCE函数不适用于'<' (小于)标志

时间:2017-04-06 15:59:11

标签: azure-cosmosdb

我有一个完美的查询,如下所示:

  

SELECT p.id FROM place p WHERE ST_DISTANCE(p.geometry,{' type':' Point',' coordinates':[52.0826443333333,5.11771783333333] })> 6000

它返回一个距离地理空间点超过6000米的文档ID列表。一切似乎都很好。但是,如果我转过'>' (大于)签署'<' (小于),它不会给出任何结果。有趣的是,如果我将WHERE子句放在SELECT语句中,它会返回false / true语句,如下所示:

  

SELECT ST_DISTANCE(p.geometry,{' type':' Point',' coordinates':[52.0826443333333,5.11771783333333]})< 6000 AS结果来自地方p

它按预期生成true和false语句。因此评估似乎有效,但它不会返回任何输出。目前,我只是使用后者的工作,并选择计算的距离。但是现在我必须计算在其他地方某个距离内的点(比如在客户端或存储过程中)。

更新 我使用指定的索引策略(thanks to this example)进行了测试:

  

' indexingPolicy':{' includedPaths':[{'路径':' /"几何" /?&# 39;,'索引':[{' kind':' Spatial',' dataType':' LineString'} ]},{'路径':' /'}}}

这解决了这个问题。我仍然认为空间功能确实在大于'大于'而不是'小于'但我认为它已经解决了。

1 个答案:

答案 0 :(得分:0)

您应该在该字段上指定Spatial索引,如下所示:

'indexingPolicy': {
    'includedPaths': [
        {
            'path': '/"geometry"/?', 
            'indexes': [ 
               {'kind': 'Spatial', 'dataType': 'LineString'}
            ]
        }, 
        {'path': '/'}
    ]
}