Neo4j spatial withinDistance仅返回一个节点

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语法,这样我就可以获得距指定点给定距离内的所有用户 如果可以返回节点及其到该点的各自距离,则更有用 有没有办法在不指定

我正在使用Neo4j 2.0的spatial server插件,并设法将具有地理属性lat/lon的用户和城市添加到空间索引“geom”。不幸的是,我无法通过Neo4jClient获得正确的语法来取回它们:(我想要的基本上是:

  • 将cypher查询
    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无法以正常方式处理附加参数,因此