在 Neo4j 中,使用 Cypher,我想对数字 1 到 14(即quantity1
to quantity14
)运行以下查询:
LOAD CSV WITH HEADERS FROM '<path>' AS row
WITH row WHERE row.quantity1 IS NOT NULL
MATCH (m:main {main_id: row.main})
MERGE (q:quantity {quantity : row.quantity1})
MERGE (m)-[:main_has_quantity]->(q);
该命令的作用:该命令读取 CSV,创建数量节点(如果它不为空且不存在),然后在数量节点与其对应的主节点之间创建关系。我想quantity1
通过quantity14
CSV 对列执行此操作。
我尝试使用UNWIND
,FOREACH
但两个命令都抛出错误:
LOAD CSV WITH HEADERS FROM '<path>' AS row
UNWIND range(1,14) as i
WITH row WHERE row.quantity+toString(i) IS NOT NULL
MATCH (m:main {main_id: row.main})
MERGE (q:quantity {quantity : row.quantity+toString(i)})
MERGE (m)-[:main_has_quantity]->(q);
我得到了错误:
变量
i
未定义(第 5 行,第 37 列(偏移量:246))“合并(q:数量 {数量:row.quantity+toString(i)})”
我用FOREACH
了代替,UNWIND
但那不起作用,因为我不能WITH
在里面使用子句FOREACH
。
如何最好地达到我正在寻找的结果?
PS 我使用的是 Neo4j 社区版。