使用distance()函数的扩展示例

时间:2015-11-04 20:30:25

标签: orientdb

注意,我知道OrientDB geolocation(虽然我对接受的答案的格式不好有些麻烦,因为它做出了很大的假设,实际上可能在语法上不正确,但还不能提交编辑)。

我有一个Bank的顶点,其属性为latLong,作为逗号分隔的字符串。我在使用OrientDB提供的distance()函数时遇到了一些麻烦。由于distance(x,y,lat,long)期望离散值,我们编写了一个split函数,它将latLong作为数组返回:

{ ..., values: [xx.xxx,yy.yyy], ... }

但是,我(我们)似乎无法提供所提供的答案或文档示例。我怀疑答案很简单,我们已经过度思考了,但我们陷入困境。

split(input,delimiter)

return input.split(delimiter)`

非常简单。

原问题出了什么问题?

在上面引用的问题中,查询

select distance(x,y,originx,originy) <= 30 as distance from Bank order by distance

生成以下错误

com.orientechnologies.orient.core.sql.OCommandSQLParsingException: Error on parsing command at position #0: Error parsing query: select distance(x,y,originx,originy) <= 30 as distance from Bank Encountered " "<=" "<= "" 

应该是

select distance(x,y,lat,long) as distance from Bank where distance <= 30 order by distance;

不返回任何内容。

如果Bank有lat和long的离散属性,它们如何传递给distance()?具体来说,OrientDB是否期望具体的属性名称?

1 个答案:

答案 0 :(得分:2)

你必须在Bank中插入属性lat和long,如double