Gab
Gab

Reputation: 5784

Neo4j, match node with exactly one label

I have 2 type of nodes. The first type have the :Schema label. The second type have both :Root and :Schema labels. I want to write a cypher that will match only the first type (containing only the :Schema label).

I have tried this:

MATCH (s:Schema) return s;

Which return the two types. Also getting the second type is easy, you just use

MATCH (s:Schema:Root) return s;

So, what's the proper cypher to match nodes with exactly the requested label?

Upvotes: 7

Views: 1856

Answers (2)

David Makogon
David Makogon

Reputation: 71028

You can check the length of the LABELS() collection (which is handy if you don't know which other labels to exclude, but only know you want a single label):

MATCH (s:Schema)
WHERE LENGTH(LABELS(s)) = 1
return s;

Upvotes: 12

Simon
Simon

Reputation: 296

Try something like this:

match (s:Schema)
WHERE Not s:Root
RETURN s

Upvotes: 7

Related Questions