我需要2个节点列表来调用我的程序。以下查询不起作用,因为没有定义第一个列表(我想用第二个收集覆盖)。我已经尝试了很多查询,但不知怎的,我错过了正确的查询。我认为这个展示了我真正想要实现的目标。
MATCH (n:NODE)
WHERE n.NODE_ELID='BLOCK1' OR n.NODE_ELID='BLOCK2'
WITH COLLECT(n) AS blockNodes
MATCH (m:NODE)
WHERE m.NODE_ELID='MUST1' OR m.NODE_ELID='MUST2'
WITH COLLECT(m) AS mustNodes
MATCH (from:NODE{NODE_ELID:'START'}),(to:NODE{NODE_ELID:'END'})
CALL example.aStar(from,to,'CONNECTED_TO','DISTANCE','COORD_X','COORD_Y',blockNodes,mustNodes) yield path as path, weight as weight
RETURN path, weight
提前致谢。
答案 0 :(得分:2)
在第6行传递blockNodes
:
WITH blockNodes, COLLECT(m) AS mustNodes
这里的要点是WITH
做了很多事情:它执行投影,聚合,过滤(因为WITH
子句可以有自己的WHERE
子句)和排序/限制。有关详细信息,请参阅the docs on WITH
。