【问题标题】:Using Neo4J Spatial Cypher queries with other conditions在其他条件下使用 Neo4J Spatial Cypher 查询
【发布时间】:2013-08-11 13:30:36
【问题描述】:

我正在使用 Neo4J 空间密码查询来查找半径 25 公里内的用户,并在其中找到与我同乡的人。我使用了以下查询:

START u=node(5),node=node:geom('withinDistance:[17.3,78.3,25.0]') MATCH (u)-[:hometown]->()<-[:hometown]-(o) RETURN o;

这个查询不符合我的预期。它识别给定半径内的所有用户节点,并为每个节点执行相同的 MATCH 查询,该查询特定于节点 ID 为 5 的用户。

把这个问题分成两部分,这是我想结合的。 第一部分,识别半径 25 公里内的所有用户:

START node=node:geom('withinDistance:[17.3,78.3,25.0]') RETURN node;    

第二部分,识别所有和我同乡的用户:

START u=node(5) MATCH (u)-[:hometown]->()<-[:hometown]-(o) RETURN o;

如何将这两个查询组合成一个查询?

【问题讨论】:

    标签: neo4j neo4j-spatial


    【解决方案1】:

    如果我理解正确,“节点”包含给定半径内的所有家乡?在哪种情况下,以下会做你想做的事?

    START u=node(5),town=node:geom('withinDistance:[17.3,78.3,25.0]') 
    MATCH town<-[:hometown]-o
    
    WITH u, o
    MATCH (u)-[:hometown]->()<-[:hometown]-(o) 
    RETURN o
    

    我看到彼得已经在邮件列表中回答了。所以实际上我的假设是错误的,“节点”代表用户,这就是答案:

    START u=node(5),o=node:geom('withinDistance:[17.3,78.3,25.0]') 
    MATCH (u)-[:hometown]->()<-[:hometown]-(o) 
    RETURN o
    

    【讨论】:

    • 'node' 包含给定半径内的所有用户。在这些用户中,我需要找到和我一样有家乡的人。我想出了这个有效的查询,如果您认为我的查询结构正确,请告诉我:START u=node(5),node=node:geom('withinDistance:[17.3,78.3,25.0]') MATCH (u)-[:hometown]->()
    猜你喜欢
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多