我怎样才能两次使用“线”?

时间:2020-09-08 03:45:13

标签: neo4j cypher

LOAD CSV WITH HEADERS FROM 'http://127.0.0.1/static/relations/252.csv' AS line  
MATCH (a:ip{value:line.userIp}),(b:email{value:line.ucEmail})  
MERGE (a)-[rel:mayrelations]->(b)  
WITH rel, COALESCE(rel.spendTime, []) + line.spendTime AS spendTime
UNWIND spendTime as r0
WITH rel, collect(distinct r0) AS unique
set rel.spendTime= unique  


WITH rel, COALESCE(rel.eventOccurTime, []) + line.eventOccurTime AS eventOccurTime
UNWIND eventOccurTime as r1
WITH rel, collect(distinct r1) AS unique
set rel.eventOccurTime= unique

此语法不起作用,并引发错误:“未定义变量line”,我认为这意味着'line'变量只能使用一次。如何使用两次?

1 个答案:

答案 0 :(得分:0)

您必须将line变量添加到WITH语句中: 如果您选中official docs,则可以看到以下说明:

请务必注意,WITH会影响作用域中的变量。任何 WITH子句中未包含的变量不会被带到 查询的其余部分。

从'http://127.0.0.1/static/relations/252.csv'AS行加载带标题的CSV文件
匹配(a:ip {value:line.userIp}),(b:email {value:line.ucEmail})
合并(a)-[rel:mayrelations]->(b)
WITH line,rel,COALESCE(rel.spendTime,[])+ line.spendTime AS消费时间 UNWIND花时间为r0 WITH line,rel,collect(distinct r0)为唯一 设置rel.spendTime =唯一

与rel,COALESCE(rel.eventOccurTime,[])+ line.eventOccurTime AS eventOccurTime UNWIND eventOccurTime as r1 使用rel,以唯一的方式收集(distinct r1) 设置rel.eventOccurTime =唯一