Concatenate clauses

In most cases, clauses can be concatenated by using chained methods, for example:

new Cypher.Match(myPattern).return(myNode);
MATCH(this0)
RETURN this0

However, in some cases, you must concatenate clauses manually. This may be caused by:

  • Chained methods not being available.

  • Dynamic number of clauses in a query.

  • Composite clauses that have been generated separately.

  • Using Cypher®.Raw.

For these cases, use the helper utility Cypher®.utils.concat. This function accepts any number of clauses and concatenates them in the provided order. For instance, the previous example could be written as:

const matchClause = new Cypher.Match(myPattern);
const returnClause = new Cypher.Return(myNode);

const clause = Cypher.utils.concat(matchClause, returnClause);

The resulting Cypher® is identical to the first example:

MATCH(this0)
RETURN this0

Cypher®.utils.concat can also be used to merge multiple clauses dynamically:

const match1 = new Cypher.Match(new Cypher.Node());
const match2 = new Cypher.Match(new Cypher.Node());
const match3 = new Cypher.Match(new Cypher.Node());

const clauses = [match1, match2, match3]

const clause = Cypher.utils.concat(...clauses);

Additionally, utils.concat also accepts undefined and, in this case, those values are ignored. The following example produces the same Cypher® as before:

const clauses = [match1, match2, undefined, match3]

const clause = Cypher.utils.concat(...clauses);

Note that Cypher®.utils.concat accepts any clause and does not ensure that the resulting Cypher is valid.

It is not possible to pass the same clause twice to Cypher®.utils.concat. Make sure that every clause is a different instance of a Cypher® Builder clause.