apoc.atomic.insert

Details

Syntax

apoc.atomic.insert(container, propertyName, position, value [, retryAttempts ]) :: (container, property, oldValue, newValue)

Description

Inserts a value at position into the LIST<ANY> value of a property. The procedure then sets the result back on the property.

Input arguments

Name

Type

Description

container

ANY

The node or relationship that has a property containing a list.

propertyName

STRING

The name of the property into which the value will be inserted.

position

INTEGER

The position in the list to insert the item into.

value

ANY

The value to insert.

retryAttempts

INTEGER

The max retry attempts. The default is: 5.

Return arguments

Name

Type

Description

container

ANY

The updated node or relationship.

property

STRING

The name of the updated property.

oldValue

ANY

The original value on the property.

newValue

ANY

The new value on the property.

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 adds Mary in position 2 of children list:

MATCH (p:Person {name:'David'})
CALL apoc.atomic.insert(p,'children',2,'Mary',5)
YIELD oldValue, newValue
RETURN oldValue, newValue;
Results
oldValue newValue

["Anne", "Sam", "Paul"]

["Anne", "Sam", "Mary", "Paul"]