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

时间:2018-06-08 14:33:08

标签: 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结束。所以如果他们与BOTH 4和2有关系,我只想要它们。

我如何以我想要的方式查询?

1 个答案:

答案 0 :(得分:1)

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

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

Graph visualization option