Neo4j:查找与列表中所有节点有连接的节点

标签 neo4j cypher

假设我有一个匹配查询,它返回节点 (oms) 列表,接下来我匹配与 (oms) 相关的节点 (rs),但我只需要 (rs) 的单个节点有它们与我之前返回的所有或更多列表 (oms) 的关系。我的查询如下所示:

MATCH (st:Route) WHERE id(st) = 0
MATCH (st)--(rs:RS)--(oms:OMS)
WITH st,rs, collect(oms) AS omsList

MATCH (ed:Route)--(rs2:RS)
WHERE ALL(x in omsList WHERE (rs2)--(x))
UNWIND omsList AS oms

RETURN *

这就是我的查询给出的结果:

Query results

但正如上面所解释的,我不需要节点 20 和 21,因为它们与从列表返回的所有节点没有关系。

注意,我从节点 0 开始,以 (oms) 节点 4 和 2 结束。因此,我只需要它们与 4 和 2 都有关系。

我如何按照我想要的方式查询这个?

最佳答案

在我看来,您的查询是正确的。我认为您的问题与名为“连接结果节点”的 Neo4j 浏览器可视化功能有关。启用此功能后,当这些节点之间存在连接时,Neo4j 浏览器将以图形可视化模式连接结果节点。

要禁用此行为,您应该转到 Neo4j 浏览器设置的“图形可视化”部分,然后取消选中“连接结果节点”选项,如下图所示:

Graph visualization option

关于Neo4j:查找与列表中所有节点有连接的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50762939/

相关文章:

neo4j - 使用给定的 uuid 查询数据库中的未知元素

Neo4j:传递查询和节点排序

database - 用于创建关系的 Neo4j 节点属性数组

graph - 使用密码检测neo4j属性图中的循环

indexing - Neo4j:在所有标签上创建索引

neo4j - 将 GraphML 导入 Neo4j : how to specify node labels?

javascript - Neo4J 3.1.3 图数据库远程访问

coldfusion - 使用 ColdFusion 连接到 neo4j

Neo4j 将多条线聚合成一个 map

neo4j - 无法在 foreach 内对现有节点使用 Merge