neo4j - 将 Neo4J Spatial Cypher 查询与其他条件结合使用

标签 neo4j neo4j-spatial

我正在使用 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/

相关文章:

java - Neo4j-spatial 在 OSM 中查找节点并找到到 POI 的最短路径

neo4j - 使用 cypher 和 apoc 将数百万个节点添加到 neo4j 空间层

mysql - neo4j 示例 - 图与关系概念

nosql - 什么是已知的最大Neo4j集群?

Neo4j 空间密码查询 withinDistance 不返回现有节点

java - Neo4j-spatial 导入 OSM 发现不匹配的顶点

java - dumpToString 中的一个奇怪的类转换异常

neo4j - Neo4j 的数据库级验证

java - 在java中为neo4j节点生成j uuid的最佳方法是什么

java - Neo4j 控制台无法启动