neo4j 将节点转换为节点列表

Wan*_*tIt 4 neo4j cypher

假设我们有这个查询:

match (n:Intersection) WHERE NOT (n)<-[:RTREE_REFERENCE]-() RETURN n
Run Code Online (Sandbox Code Playgroud)

它返回节点,但我们如何将其作为返回的所有节点的LIST返回?即[节点1,节点2,节点3]。我正在使用的过程需要一个输入参数,该参数需要采用集合/列表格式

match (n:Intersection) WHERE NOT (n)<-[:RTREE_REFERENCE]-() with n  CALL spatial.addNodes("network",n) yield node return node

Type mismatch: expected Collection<Node> but was Node 
Run Code Online (Sandbox Code Playgroud)

小智 5

如果您将查询更改为:

MATCH (n:Intersection) 
WHERE NOT (n)<-[:RTREE_REFERENCE]-() 
RETURN COLLECT(n)
Run Code Online (Sandbox Code Playgroud)

然后它将返回节点列表。

所以第二个查询将如下所示:

MATCH (n:Intersection) 
WHERE NOT (n)<-[:RTREE_REFERENCE]-() 
WITH COLLECT(n) AS nodesList
CALL spatial.addNodes("network", nodesList) YIELD node
RETURN node
Run Code Online (Sandbox Code Playgroud)

请参阅https://neo4j.com/docs/cypher-manual/current/functions/aggregating/#functions-collect