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.