如何在不使用合并Neo4J 3.5合并的情况下防止重复关系



如何在不使用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命令正在做的...

您对属性idkey的索引/约束?

相关内容

最新更新