Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j在使用apoc.merge.relationship()时向关系添加属性_Neo4j_Cypher_Neo4j Apoc - Fatal编程技术网

Neo4j在使用apoc.merge.relationship()时向关系添加属性

Neo4j在使用apoc.merge.relationship()时向关系添加属性,neo4j,cypher,neo4j-apoc,Neo4j,Cypher,Neo4j Apoc,我有以下要点: // NO ATTACHMENT OR LINK USING PERIODIC COMMIT 1000 LOAD CSV WITH HEADERS FROM ("file:///sessions/Hourly_Parsed/2019-12-10_00_hourly_parsed_mail_logs.csv") AS row MERGE (a:Sender { name: row.From, domain: row.Sender_Sub_Fld, datetime: datetim

我有以下要点:

// NO ATTACHMENT OR LINK
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM ("file:///sessions/Hourly_Parsed/2019-12-10_00_hourly_parsed_mail_logs.csv") AS row
MERGE (a:Sender { name: row.From, domain: row.Sender_Sub_Fld, datetime: datetime(replace(row.DateTime, ' ', 'T'))})
MERGE (b:Recipient { name: row.To, datetime: datetime(replace(row.DateTime, ' ', 'T'))})
WITH a,b,row
WHERE row.Url = "false" AND row.FileHash = "false"
CALL apoc.merge.relationship(a, row.Outcome2, {}, {}, b) YIELD rel as rel1
RETURN a,b
如您所见,我已将datetime属性添加到
发送方
接收方
节点。我想将此属性添加到关系中。我遇到的问题是,我的属性是使用
apoc.merge.relationship()
创建的,因此我可以根据rows列中的结果创建名称


我可以在
调用
部分下面添加一些内容来添加
日期时间:日期时间(replace(row.datetime,,'T'))
作为关系的属性吗?

您可以在同一
apoc.merge.relationship>调用中为关系添加属性。这是apoc电话的签名:

apoc.merge.relationship(startNode::NODE?、relationshipType::STRING?、IdentintProps::MAP?、props::MAP?、endNode::NODE?、onMatchProps={}::MAP?:(rel::relationship?)

所以这应该对你有用:

调用apoc.merge.relationship(a,row.Outcome2,{},{datetime:datetime(replace(row.datetime,,'T'))},b,{})

请记住,这将仅在创建新边缘时添加
datatime
属性。如果在
apoc.merge.relationship
的最后一个参数中设置了属性,则该属性将添加到
MATCH
。如果要在
合并
匹配
部分中包含该属性,可以在
apoc.MERGE.relationship的第3个参数中进行设置。例如,如果您运行

CALL apoc.merge.relationship(a, "CONNECTS_TO", {time: "today"}, {}, b, {})
CALL apoc.merge.relationship(a, "CONNECTS_TO", {time: "tomorrow"}, {}, b, {})
您将得到两个连接到
a
b
之间的
边的
连接,一个是
时间:“今天”
,另一个是
时间:“明天”
。但是如果您运行以下命令

CALL apoc.merge.relationship(a, "CONNECTS_TO", {}, {time: "today"}, b, {})
CALL apoc.merge.relationship(a, "CONNECTS_TO", {}, {time: "tomorrow"}, b, {})

您将只得到一个连接到
edge的
连接,它的属性为
时间:“today”

这是有效的,感谢您对@NonameCurious的解释