apoc.merge.relationshipWithStats.eager

Details

Syntax

apoc.merge.relationshipWithStats.eager(startNode, relType, identProps, onCreateProps, endNode [, onMatchProps ]) :: (stats, rel)

Description

Merges the given RELATIONSHIP values with the given dynamic types/properties eagerly. Provides queryStatistics in the result.

Input arguments

Name

Type

Description

startNode

NODE

The start node of the relationship.

relType

STRING

The type of the relationship.

identProps

MAP

Properties on the relationship that are always merged.

onCreateProps

MAP

Properties that are merged when a relationship is created.

endNode

NODE

The end node of the relationship.

onMatchProps

MAP

Properties that are merged when a relationship is matched. The default is: {}.

Return arguments

Name

Type

Description

stats

MAP

The returned query statistics.

rel

RELATIONSHIP

The updated relationship.

Example

Given this dataset:

CREATE (:Person {name: 'Alice'}), (:Person {name: 'Bob'})

The following query merges a KNOWS relationship between two existing nodes and returns the relationship alongside query statistics:

MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CALL
  apoc.merge.relationshipWithStats.eager(
    a,
    'KNOWS',
    {id: 1},
    {since: 2019},
    b,
    {}
  )
  YIELD rel, stats
RETURN
  type(rel) AS type,
  rel.id AS id,
  rel.since AS since,
  stats.relationshipsCreated AS relationshipsCreated,
  stats.propertiesSet AS propertiesSet
Results
type id since relationshipsCreated propertiesSet

"KNOWS"

1

2019

1

2

Produces the same result as apoc.merge.relationshipWithStats. The eager variant fully materializes all results before returning, which prevents conflicts when the procedure is used inside a larger query that also reads or writes relationships of the same type.