Neo4j spatial withinDistance仅返回一个节点
我正在使用Neo4j 2.0的spatial server插件,并设法将具有地理属性lat/lon的用户和城市添加到空间索引“geom”。不幸的是,我无法通过Neo4jClient获得正确的语法来取回它们:(我想要的基本上是:Neo4j spatial withinDistance仅返回一个节点,neo4j,neo4jclient,neo4j-spatial,Neo4j,Neo4jclient,Neo4j Spatial,我正在使用Neo4j 2.0的spatial server插件,并设法将具有地理属性lat/lon的用户和城市添加到空间索引“geom”。不幸的是,我无法通过Neo4jClient获得正确的语法来取回它们:(我想要的基本上是: 将cypher查询START n=node:geom('withinDistance:[60.0,15.0,100.0])返回n;到Neo4jClient语法,这样我就可以获得距指定点给定距离内的所有用户 如果可以返回节点及其到该点的各自距离,则更有用 有没有办法在不指定
START n=node:geom('withinDistance:[60.0,15.0,100.0])返回n;
到Neo4jClient语法,这样我就可以获得距指定点给定距离内的所有用户更新
经过一些尝试和错误,我已经解决了问题1以及通过Neo4jClient与Neo4j spatial通信的问题。下面的Neo4jClient查询返回1个用户,但仅返回最近的一个用户,即使数据库包含2个应返回的用户。我还通过web界面尝试了纯密码,但没有任何运气。我是否完全是否理解不坚持应该做什么?:)真的没有人能对上面的问题2和3给出一点见解吗?非常感谢
var queryString = string.Format("withinDistance:[" + latitude + ", " + longitude + ", " + distance + "]");
var graphResults = graphClient.Cypher
.Start(new { user = Node.ByIndexQuery("geom", queryString) })
.Return((user) => new
{
EntityList = user.CollectAsDistinct<UserEntity>()
}).Results;
var queryString=string.Format(“WithindDistance:[“+纬度+”,“+经度+”,“+距离+”]);
var graphResults=graphClient.Cypher
.Start(新的{user=Node.ByIndexQuery(“geom”,queryString)})
.Return((用户)=>新建
{
EntityList=user.CollectAsDistinct()
}).结果;
客户不允许您使用fluent系统,您能得到的最接近的系统可能是:
var geoQuery = client.Cypher
.Start( new{n = Node.ByIndexLookup("geom", "withindistance", "[60.0,15.0, 100.0]")})
.Return(n => n.As<????>());
这是行不通的,不幸的是,这意味着你有两个选择:
IRawGraphClient
界面。现在这是非常不赞成的,我通常不会建议这样做,但是如果你想按原样使用客户机,我看你没有太多选择。要做到这一点,你需要这样做:(对不起,塔瑟姆)((IRawGraphClient)client.ExecuteGetCypherResults(新的CypherQuery(“开始n=node:geom('WithindInstance:[60.0,15.0,100.0]))返回n”,null,CypherResultMode.Projection)代码>
我不知道空间系统,所以你必须等待知道它的人回答你的其他问题——我不知道返回的是什么(因此是节点
返回类型,但如果您得到了解决,您应该将其更改为适当的POCO。客户端不允许您使用fluent系统,您可以得到的最接近的返回类型如下:
var geoQuery = client.Cypher
.Start( new{n = Node.ByIndexLookup("geom", "withindistance", "[60.0,15.0, 100.0]")})
.Return(n => n.As<????>());
这是行不通的,不幸的是,这意味着你有两个选择:
获取代码并创建拉取请求,将其添加到
直接使用IRawGraphClient
界面。现在这是非常不受欢迎的,我通常不会建议这样做,但如果你想按原样使用客户端,我看你没有太多选择。要做到这一点,你需要做如下操作:(对不起,塔瑟姆)
((IRawGraphClient)client.ExecuteGetCypherResults(新的CypherQuery(“开始n=node:geom('WithindInstance:[60.0,15.0,100.0]))返回n”,null,CypherResultMode.Projection));
我不知道空间系统,所以你必须等待知道它的人回答你的其他问题——我不知道返回的是什么(因此是节点
返回类型,但如果您得到了解决,您应该将其更改为适当的POCO。客户端不允许您使用fluent系统,您可以得到的最接近的返回类型如下:
var geoQuery = client.Cypher
.Start( new{n = Node.ByIndexLookup("geom", "withindistance", "[60.0,15.0, 100.0]")})
.Return(n => n.As<????>());
这是行不通的,不幸的是,这意味着你有两个选择:
获取代码并创建拉取请求,将其添加到
直接使用IRawGraphClient
界面。现在这是非常不受欢迎的,我通常不会建议这样做,但如果你想按原样使用客户端,我看你没有太多选择。要做到这一点,你需要做如下操作:(对不起,塔瑟姆)
((IRawGraphClient)client.ExecuteGetCypherResults(新的CypherQuery(“开始n=node:geom('WithindInstance:[60.0,15.0,100.0]))返回n”,null,CypherResultMode.Projection));
我不知道空间系统,所以你必须等待知道它的人回答你的其他问题——我不知道返回的是什么(因此是节点
返回类型,但如果您得到了解决,您应该将其更改为适当的POCO。客户端不允许您使用fluent系统,您可以得到的最接近的返回类型如下:
var geoQuery = client.Cypher
.Start( new{n = Node.ByIndexLookup("geom", "withindistance", "[60.0,15.0, 100.0]")})
.Return(n => n.As<????>());
这是行不通的,不幸的是,这意味着你有两个选择:
获取代码并创建拉取请求,将其添加到
直接使用IRawGraphClient
界面。现在这是非常不受欢迎的,我通常不会建议这样做,但如果你想按原样使用客户端,我看你没有太多选择。要做到这一点,你需要做如下操作:(对不起,塔瑟姆)
((IRawGraphClient)client.ExecuteGetCypherResults(新的CypherQuery(“开始n=node:geom('WithindInstance:[60.0,15.0,100.0]))返回n”,null,CypherResultMode.Projection));
我不知道空间系统,所以你必须等待知道它的人回答你的其他问题——我不知道返回的是什么(因此使用了节点
返回类型,但如果您解决了这个问题,您应该将其更改为适当的POCO。经过一些尝试和错误,并在Neo4j google group专家的帮助下,我的所有问题现在都解决了:)
Neo4jClient可用于查询WithindInstance,如下所示。不幸的是WithindInstance无法以正常方式处理附加参数,因此