Overview Defining a Model Instances Creating Nodes and Relationships Merging Nodes and Relationships Updating Nodes and Relationships Deleting Nodes Deleting Relationships Finding Nodes and Relationships Hooks Temporary Databases
A QueryRunner
instance can be used for editing nodes from Objects. The node properties to update, a optional label, and an optional where param are needed.
1link/* --> let 'queryRunner' be a QueryRunner instance */
2linkconst result = await queryRunner.update({
3link /* --> the matched nodes will be updated with the following values */
4link data: {
5link name: 'Alex',
6link age: 30,
7link /* --> using the "remove" Symbol from "UpdateOp" */
8link disabled: { [UpdateOp.remove]: true },
9link },
10link /* --> (optional) label(s) of the nodes to be matched. Multiple labels like 'User:Person' can also be used */
11link label: 'User',
12link /* --> (optional) the where clause for the nodes to be matched. A param object or a Where instance can be used */
13link where: { // @see [Where](../Where-Parameters)
14link /* --> the identifier needs to be used as a key */
15link u: {
16link id: {
17link /* --> using the "in" Symbol from "Op" */
18link $[Op.in]: ['1', '2']
19link }
20link }
21link },
22link /* --> (optional) the identifier of the nodes for the query. Is needed for parsing the results. Default is the value of 'QueryRunner.identifiers.default' */
23link identifier: 'u',
24link /* --> (optional) whether to return the nodes */
25link return: true,
26link /* --> (optional) an existing session or transaction to use */
27link session: null,
28link});
29link
30link/* --> the result is the QueryResult from the neo4j driver. In case the nodes were returned, their properties can be retrieved */
31linkconsole.log(result.records.map((v) => v.get('u').properties));
Node properties can be updated just by setting a new value of the respective type. However, some update operations can only be performed using the exported UpdateOp
variable.
When this operation is set to true
, the respective property will be completely removed from the node (similar to the JS delete
operator).
1link// ...
2link data: {
3link name: 'Alex',
4link /* --> using the "remove" Symbol from "UpdateOp" */
5link age: { [UpdateOp.remove]: true },
6link },
7link // ...
8link identifier: 'u',
9link// ...
10link
11linkconsole.log(result.records.map((v) => v.get('u').properties.age)); // undefined