我正在使用 Neo4J Spatial cypher 查询来查找 25KM 半径内的用户,并在其中查找与我具有相同家乡的用户。我使用了以下查询:
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;
如何将这两个查询合并为一个查询?
最佳答案
那么,如果我理解正确的话,“节点”包含给定半径内的所有家乡?在哪种情况下,以下内容会满足您的要求?
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
关于neo4j - 将 Neo4J Spatial Cypher 查询与其他条件结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18172424/