在 Neo4j 中,使用 Cypher,我想对数字 1 到 14(即quantity1to 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通过quantity14CSV 对列执行此操作。
我尝试使用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 社区版。