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

无法在Neo4j Cypher查询中返回FOREACH之后的节点,neo4j,cypher,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_

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

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作为年份
,Neo4j抛出了一个关于
y
的错误,因此您似乎无法对每个执行
操作,然后在之后收集结果


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

我从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
根据我的阅读,我相信这个
放松
是一些更过时的查询的继承。我强烈建议尽可能地放松

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