neo4j - 在不使用唯一性的情况下确保具有部分匹配的模式的方法是什么?
问题描述
这是一个众所周知的陷阱,MERGE
当您给它一个复杂的模式时,它要么创建所有节点,要么不创建任何节点。如果您没有唯一性约束,那么MERGE
将按设计创建重复节点。
我想知道是否有办法确保模式存在,同时利用匹配。
例如对于这种模式:
(Person {name: "Bob"})-[:FRIEND_OF]->(Person {name: "Alice"})-[:FRIEND_OF]->(Person {name: "Chloe"})
数据库可能处于各种状态:
- Bob 和 Chloe 存在,但 Alice 不存在。应该创建爱丽丝。
- 所有 3 个都存在,但他们都不是朋友,应该创建关系。
- Alice 和 Chloe 存在并且是朋友,应该创建 Bob。
等等。
最终结果是,我希望以某种方式确保模式。我知道该MERGE
操作可能不是为了确保这一点而建立的。是否有处理这个问题的特定方法,或者我应该只在应用程序级别确保这一点,并以特定于问题/领域的方式来确保效率?
解决方案
推荐阅读
- visual-studio - 为什么我的 Visual Studio 2019 Pro 在进行 Visual Installer 更新后调试如此缓慢?
- python - 在函数内运行多处理不起作用
- java - Spring类路径资源被覆盖
- c# - 如何使用 C# 从控制器反转 JSON.Stringify
- postgresql - Rails 和 Postgresql 中的每周小时分配问题
- python-3.x - keras 张量流中的函数实现
- r - 如何在 R 中使用 lapply 将 colnames 作为绘图标题与数据一起循环?
- excel-formula - Excel 2010 用户。我应该使用什么论坛来解决我的问题?
- xcode - 如何在本地删除文件并提交更改后合并存储?
- jira-plugin - 如何覆盖 Atlassian SDK 的 server.xml?