neo4j - Neo4j:如何在我的密码语句中实现 apoc.atomic.update?
问题描述
我有一个用于第一次导入的 Cypher 导入和new_neo_test_1.csv
具有以下列的文件:From
、To
、Sender_Sub_Fld
、DateTime
、Url
和FileHash
LOAD CSV WITH HEADERS FROM ("file:///sessions/new_neo_test_1.csv") AS row
MERGE (a:Sender { name: row.From, domain: row.Sender_Sub_Fld, datetime: datetime(row.DateTime) })
MERGE (b:Recipient { name: row.To, datetime: datetime(row.DateTime) })
WITH a,b,row
WHERE row.Url = "false" AND row.FileHash = "false"
CALL apoc.merge.relationship(a, row.Outcome2, {}, {datetime: datetime(row.DateTime)}, b, {}) YIELD rel as rel1
RETURN a,b
我的目标是对其余的导入使用类似以下的内容。datetime
如果节点已经存在,我想更新关系属性。有点像最后一次看到的财产。
我尝试apoc.atomic.update
了以下类似的变体,但似乎无法使其正常工作。
LOAD CSV WITH HEADERS FROM ("file:///sessions/new_neo_test_2.csv") AS row
MERGE (a:Sender { name: row.From, domain: row.Sender_Sub_Fld, datetime: datetime(row.DateTime) })
MERGE (b:Recipient { name: row.To, datetime: datetime(row.DateTime) })
WITH a,b,row
WHERE row.Url = "false" AND row.FileHash = "false"
CALL apoc.merge.relationship(a, row.Outcome2, {}, {}, b) YIELD rel as rel1
CALL apoc.atomic.update(rel1, datetime, datetime(row.DateTime)) YIELD datetime as newdatetime
RETURN a,b
或者,如果有其他建议可以解决我的问题,我们将不胜感激。
解决方案
MERGE
您应该只使用在非首次导入的子句中唯一标识节点的值。否则,您可能会导致创建新节点。例如,您的MERGE
子句应该省略datetime
属性(因为它们的值可能会在导入文件之间发生变化)。每次之后MERGE
,都可以使用SET
更新了datetime
。
这可能对您有用:
LOAD CSV WITH HEADERS FROM ("file:///sessions/new_neo_test_2.csv") AS row
WITH row, datetime(row.DateTime) AS dt
MERGE (a:Sender {name: row.From, domain: row.Sender_Sub_Fld})
SET a.datetime = dt
MERGE (b:Recipient {name: row.To})
SET b.datetime = dt
WITH a, b, row, dt
WHERE row.Url = "false" AND row.FileHash = "false"
CALL apoc.merge.relationship(a, row.Outcome2, {}, {}, b) YIELD rel
SET rel.datetime = dt
RETURN a, b
注意:没有明显需要 using apoc.atomic.update
,所以这个查询不需要。
推荐阅读
- amazon-web-services - AWS Data Exchange 限制如何避免?
- angular - NgRx 存储选择器单元测试
- java - 如何使用以当前日期为输入的java获取下一个日期
- c# - Xna 可破坏的墙壁
- microsoft-graph-api - 尝试在 MS Graph 中创建会议时出现内部服务器错误
- linux - ln:创建符号链接失败:文件存在
- angularjs - 如何设置织物组的边界框旋转和尺寸与其对象相同
- c - 在C中找到数组中的最小数字的问题
- oracle - 如何将表从空表空间移动到另一个表空间
- javascript - 将 yyyy-mm-dd-hhmmss 格式的日期转换为纪元