如何在不使用Merge Neo4J 3.5?
的情况下防止重复关系我想对我从kafka获得的每批进行以下查询。
MATCH (a:Dense1) where a.id <> "1"
WITH a
MATCH (b:Dense1) where b.id = "1"
WITH a,b
WHERE a.key = b.key
CREATE (a)-[:PARENT_OF]->(b)
如果我将CREATE
更改为MERGE
,则由于双重锁定,如果我更改为CREATE UNIQUE
性能,则在此解释的情况下会大大减慢,但仍然不符合MERGE
,但仍然不符合CREATE
。我的目标是,即使查询是多次运行,甚至更好地向客户端驱动程序发送通知或例外,即使两个节点之间存在关系,也不会做任何事情。我可以为每种关系创建uid
属性并在其上有限制吗?那会起作用吗?
您可以在最新的WHERE
条款中添加该关系是否存在:
MATCH (a:Dense1) where a.id <> "1"
WITH a
MATCH (b:Dense1) where b.id = "1"
WITH a,b
WHERE a.key = b.key AND NOT (a)-[:PARENT_OF]->(b)
CREATE (a)-[:PARENT_OF]->(b)
但这几乎是MERGE
命令正在做的...
您对属性id
和key
的索引/约束?