python-3.x - 从 neo4j 中的特定标签中搜索
问题描述
我有标签为 a、b、c、d 的节点,我只想从标签“a”和标签“b”中搜索节点“node1”。如果找到“node1”,则返回该节点,否则创建一个标签为“a”的节点。
我试着这样做:
Merge(n {id: "node1"})
on create set n:a
return n
唯一的问题是它会从“a”、“b”、“c”、“d”的标签中搜索,而且非常耗时。
简而言之,这是一个ALLNODESCAN,我只想从标签“a”和“b”中搜索。
解决方案
MERGE 不能对多个标签执行此操作。
虽然您可以使用 OPTIONAL MATCHes,然后使用 FOREACH hack 进行 MERGE 以进行条件执行(如果没有具有该 ID 的标签用于标签:A 或:B 的节点),您将无法在FOREACH 中的 MERGEd 节点。
在这里使用APOC 条件程序可能会更好:
OPTIONAL MATCH (n:A {id: "node1"})
OPTIONAL MATCH (m:B {id: "node1"})
WITH coalesce(n, m) as node // returns first non-null value
CALL apoc.do.when(node is null, "MERGE (n:A {id:'node1'}) RETURN n", '', {}) YIELD value
RETURN coalesce(node, value.n) as n
推荐阅读
- angular - 使用 Validators.required True 的正确方法是什么?
- c# - ASP.NET WebAPI 方法只能在本地工作,但不能在 WebServer 上工作
- ios - 在 UIAlertController 中点击“确定”操作时如何关闭呈现视图控制器
- android-studio - Android Firebase 云功能-使用邮箱删除用户
- objective-c - AVAudioEngine 在 iOS14 中获取 inputNode 属性崩溃
- java - Gradle 没有正确构建类名
- python-3.x - 如何在强制 Lambda 函数运行两次的 AWS Lambda 中强制打印异常和错误?
- r - 在函数调用内部构造的 glms 上的 step/stepAIC
- android - 谷歌移动视觉 api - 将面部裁剪为来自相机的位图
- python - MacOS Big Sur - Python ctypes find_library 找不到库(ssl、CoreFoundation 等