在Neo4j Cypher Query中的FOREACH之后无法返回节点

时间:2017-10-03 00:27:07

标签: neo4j cypher

我们正在创建一个时间树,此查询在此处有效:

CREATE (c:Century {century_label: 2000})
MATCH (c:Century {century_label: 2000})
WITH range(1900,1905) as YEARS, c
FOREACH (year in YEARS | CREATE (y:Year {year_label:year})-[r:YEAR_IN]->(c))

这个没有:

CREATE (c:Century {century_label: 2000})
MATCH (c:Century {century_label: 2000})
WITH range(1900,1905) as YEARS, c
FOREACH (year in YEARS | CREATE (y:Year {year_label:year})-[r:YEAR_IN]->(c))
RETURN y as YEAR

问题是y as YEAR,Neo4j引发了关于y的错误,因此您似乎无法执行FOREACH然后收集结果。

返回所有已创建节点的正确语法是什么?

1 个答案:

答案 0 :(得分:4)

我从Neo4j Slack那里得到了答案:

MATCH (c:Century {century_label:$century})
UNWIND range(1900,1999) as year
CREATE (y:Year {year_label:year})-[r:YEAR_IN]->(c)
RETURN y AS YEAR

根据我的阅读情况,我相信这个UNWIND是其中一些更古老的查询的继承者。我强烈建议尽量放松。

到目前为止,我们在所有测试案例中都看到了最佳性能。