假设我有一个匹配查询,它返回节点 (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 *
这就是我的查询给出的结果:
但正如上面所解释的,我不需要节点 20 和 21,因为它们与从列表返回的所有节点没有关系。
注意,我从节点 0 开始,以 (oms) 节点 4 和 2 结束。因此,我只需要它们与 4 和 2 都有关系。
我如何按照我想要的方式查询这个?
最佳答案
在我看来,您的查询是正确的。我认为您的问题与名为“连接结果节点”的 Neo4j 浏览器可视化功能有关。启用此功能后,当这些节点之间存在连接时,Neo4j 浏览器将以图形可视化模式连接结果节点。
要禁用此行为,您应该转到 Neo4j 浏览器设置的“图形可视化”部分,然后取消选中“连接结果节点”选项,如下图所示:
关于Neo4j:查找与列表中所有节点有连接的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50762939/