neo4j - Neo4j 仅在节点存在时添加/更新属性。如果没有,那么什么也不做
问题描述
如果节点存在,它是问题Neo4j 添加/更新属性的扩展 有答案如何合并(创建或更新)节点:
您可以使用所有属性的映射一次设置它们
merge (n:Node {name: 'John'})
set n = {name: 'John', age: 34, coat: 'Yellow', hair: 'Brown'}
return n
如果您只想替换属性年龄和外套,您可以这样做。
merge (n:Node {name: 'John'})
set n.age = 34, n.coat = 'Yellow'
return n
或者您也可以将其添加为地图
merge (n:Node {name: 'John'})
set n += {age: 34, coat: 'Yellow'}
return n
任何人都可以告诉如何仅在节点存在时更新节点,但如果节点不存在则不执行任何操作。
解决方案
最简单的方法是
MATCH (n{id:{uuid}) SET n.prop=true
如果匹配失败,他们将无能为力。
假设您希望之后仍然有行;(因此您仍然可以为更复杂的查询返回数据)您可以将匹配设为可选
...
OPTIONAL MATCH (n{id:{uuid}) SET n.prop=true
同样,如果匹配失败,n 将为空,并且 SET 将不执行任何操作
推荐阅读
- ansible - 使用模块而不是 shell 与 Ansible 临时挂载 smb 共享
- html - 如何在主div的底部制作div?
- akka - 演员与普通物体
- jquery - 特定 div 中的淡出 jquery
- python-3.x - 在 Python 中打印原始文本
- excel - 使用数组跳过特定工作表
- php - 通过 remember_me 登录后将用户重定向到不同的路由,具体取决于他们在 Symfony 4 中的角色
- google-cloud-platform - 在 GCP 中使用 Cloud Pub/Sub 主题安排 bq 命令行
- laravel - 在 laravel vuejs Axios 中上传 pdf 文件
- c# - 如何使用静态方法初始化 ServiceBusConnectionStringBuilder 对象并重置它 c#