原子属性更新
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 的元素 X3
MATCH (p:Person {name:'John'})
CALL apoc.atomic.remove(p,'cars',1,5)
YIELD newValue
RETURN p
p |
---|
{"name":"John","cars":["Class A","Focus"]} |
salary1
MATCH (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} |