2过程调用的节点列表

时间:2018-01-12 09:21:15

标签: neo4j cypher

我需要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

提前致谢。

1 个答案:

答案 0 :(得分:2)

在第6行传递blockNodes

WITH blockNodes, COLLECT(m) AS mustNodes

这里的要点是WITH做了很多事情:它执行投影,聚合,过滤(因为WITH子句可以有自己的WHERE子句)和排序/限制。有关详细信息,请参阅the docs on WITH