Filter by labels
Most patterns are composed with labels such as (m:Movie)
to make simple filtering by labels. Label expressions can also be used to perform complex filtering by labels.
.hasLabel
It is possible to check for label existence in WHERE
filters. To do so, the methods .hasLabel
and .hasLabels
from Node
variables can be used in predicates. For example, to match nodes with either the Movie
or Film
labels:
const movieNode = new Cypher.Node();
const matchQuery = new Cypher.Match(new Cypher.Pattern(movieNode))
.where(Cypher.or(movieNode.hasLabel("Movie"), movieNode.hasLabel("Film")))
.return(movieNode);
MATCH (this0)
WHERE (this0:Movie OR this0:Film)
RETURN this0
The method .hasLabels
allow to provide multiple labels that the node must have
const movieNode = new Cypher.Node();
const matchQuery = new Cypher.Match(new Cypher.Pattern(movieNode))
.where(movieNode.hasLabels("Movie", "Film"))
.return(movieNode);
MATCH (this0)
WHERE this0:Movie:Film
RETURN this0
.hasType
Like labels, relationship types can be filtered in WHERE
statements with the method .hasType
const personNode = new Cypher.Node();
const actedIn = new Cypher.Relationship();
const actedInPattern = new Cypher.Pattern({ labels: ["Movie"] })
.related(actedIn)
.to(personNode, { labels: ["Person"] });
const matchQuery = new Cypher.Match(actedInPattern)
.where(Cypher.or(actedIn.hasType("ACTED_IN"), actedIn.hasType("DIRECTED")))
.return(personNode);
MATCH (:Movie)-[this0]->(this1:Person)
WHERE (this0:ACTED_IN OR this0:DIRECTED)
RETURN this