我有一个完美的查询,如下所示:
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'} ]},{'路径':' /'}}}
这解决了这个问题。我仍然认为空间功能确实在大于'大于'而不是'小于'但我认为它已经解决了。
答案 0 :(得分:0)
您应该在该字段上指定Spatial
索引,如下所示:
'indexingPolicy': {
'includedPaths': [
{
'path': '/"geometry"/?',
'indexes': [
{'kind': 'Spatial', 'dataType': 'LineString'}
]
},
{'path': '/'}
]
}