原子属性更新
APOC 库包含可用于对节点和关系上的属性进行线程安全更新的过程。
用于对节点和关系属性进行线程安全更新的过程
| 限定名称 | 类型 |
|---|---|
|
过程 |
|
过程 |
|
过程 |
|
过程 |
|
过程 |
|
过程 |
示例
以下示例将进一步解释这些过程。
CREATE (p:Person {name:'Tom',age: 40})
CREATE (p:Person {name:'Will',age: 35})
CREATE (p:Person {name:'David', children: ['Anne','Sam','Paul']})
CREATE (p:Person {name:'John', cars: ['Class A','X3','Focus']})
CREATE (p:Person {name:'Ryan', salary1:1800, salary2:1500})
Tom 的 age 属性增加 10MATCH (n:Person {name:'Tom'})
CALL apoc.atomic.add(n,'age',10,5)
YIELD oldValue, newValue
RETURN n
| n |
|---|
{"name":"Tom","age":50} |
Tom 的 age 属性减去 10MATCH (n:Person {name:'Tom'})
CALL apoc.atomic.subtract(n,'age',10,5)
YIELD oldValue, newValue
RETURN n
| n |
|---|
{"name":"Tom","age":40} |
iam 连接到 Will 的 name 属性MATCH (p:Person {name:'Will',age: 35})
CALL apoc.atomic.concat(p,"name",'iam',5)
YIELD newValue
RETURN p
| p |
|---|
{"name":"William","age":35} |
Mary 添加到 children 列表的第 2 个位置MATCH (p:Person {name:'David'})
CALL apoc.atomic.insert(p,'children',2,'Mary',5)
YIELD newValue
RETURN p
| p |
|---|
{"name":"David","children":["Anne","Sam","Mary","Paul"]} |
cars 数组中删除位于位置 1 的元素 X3MATCH (p:Person {name:'John'})
CALL apoc.atomic.remove(p,'cars',1,5)
YIELD newValue
RETURN p
| p |
|---|
{"name":"John","cars":["Class A","Focus"]} |
salary1MATCH (p:Person {name:'Ryan'})
CALL apoc.atomic.update(p,'salary1','n.salary1*3 + n.salary2',5)
YIELD newValue
RETURN p
在 operation 表达式(第三个参数)中,作为 container(第一个参数)传入的实体使用变量 n 引用。如果节点或关系被重命名(如上例所示),仍然需要将其在表达式中引用为 n。
| p |
|---|
{"name":"Ryan","salary1":6900,"salary2":1500} |