apoc.atomic.update
Procedure APOC Core
apoc.atomic.update(node/relatonship,propertyName,updateOperation) update a property’s value with a cypher operation (ex. "n.prop1+n.prop2")
Signature
apoc.atomic.update(container :: ANY?, propertyName :: STRING?, operation :: STRING?, times = 5 :: INTEGER?) :: (container :: ANY?, property :: STRING?, oldValue :: ANY?, newValue :: ANY?)
Input parameters
| Name | Type | Default |
|---|---|---|
container |
ANY? |
null |
propertyName |
STRING? |
null |
operation |
STRING? |
null |
times |
INTEGER? |
5 |
Usage Examples
The examples in this section are based on the following sample graph:
CREATE (:Person {name:'Tom',age: 40})
CREATE (:Person {name:'Will',age: 35})
CREATE (:Person {name:'David', children: ['Anne','Sam','Paul']})
CREATE (:Person {name:'John', cars: ['Class A','X3','Focus']})
CREATE (:Person {name:'Ryan', salary1:1800, salary2:1500});
The following updates salary1 with the result of an expression:
MATCH (p:Person {name:'Ryan'})
CALL apoc.atomic.update(p,'salary1','n.salary1*3 + n.salary2',5)
YIELD oldValue, newValue
RETURN oldValue, newValue;
In the operation expression (3rd parameter) the entity passed in as container (1st parameter) is referred to using the variable n.
If we rename our node/rel (as in the example above) we still have to refer to it in the expression as n.
| oldValue | newValue |
|---|---|
1800 |
6900 |