首页 > 解决方案 > 在不使用唯一性的情况下确保具有部分匹配的模式的方法是什么?

问题描述

这是一个众所周知的陷阱,MERGE当您给它一个复杂的模式时,它要么创建所有节点,要么不创建任何节点。如果您没有唯一性约束,那么MERGE将按设计创建重复节点。

我想知道是否有办法确保模式存在,同时利用匹配。

例如对于这种模式:

(Person {name: "Bob"})-[:FRIEND_OF]->(Person {name: "Alice"})-[:FRIEND_OF]->(Person {name: "Chloe"})

数据库可能处于各种状态:

  1. Bob 和 Chloe 存在,但 Alice 不存在。应该创建爱丽丝。
  2. 所有 3 个都存在,但他们都不是朋友,应该创建关系。
  3. Alice 和 Chloe 存在并且是朋友,应该创建 Bob。

等等。

最终结果是,我希望以某种方式确保模式。我知道该MERGE操作可能不是为了确保这一点而建立的。是否有处理这个问题的特定方法,或者我应该只在应用程序级别确保这一点,并以特定于问题/领域的方式来确保效率?

标签: neo4j

解决方案


推荐阅读