Prev |  | Next

## 13.1. Predicates

Predicates are boolean functions that return true or false for a given set of input. They are most commonly used to filter out subgraphs in the `WHERE` part of a query.

See also Section 8.4.2, “Comparison operators”.

Figure 13.1. Graph

### 13.1.1. ALL

Tests whether a predicate holds for all element of this collection collection.

Syntax: `ALL(identifier in collection WHERE predicate)`

Arguments:

- collection: An expression that returns a collection
- identifier: This is the identifier that can be used from the predicate.
- predicate: A predicate that is tested against all items in the collection.

Query.

    MATCH p=(a)-[*1..3]->(b)
    WHERE a.name='Alice' AND b.name='Daniel' AND ALL (x IN nodes(p) WHERE x.age > 30)
    RETURN p

All nodes in the returned paths will have an `age` property of at least 30.

Result

p
1 row
`[Node[2]{name:"Alice",age:38,eyes:"brown"},:KNOWS[1]{},Node[4]{name:"Charlie",age:53,eyes:"green"},:KNOWS[3]{},Node[0]{name:"Daniel",age:54,eyes:"brown"}]`

### 13.1.2. ANY

Tests whether a predicate holds for at least one element in the collection.

Syntax: `ANY(identifier in collection WHERE predicate)`

Arguments:

- collection: An expression that returns a collection
- identifier: This is the identifier that can be used from the predicate.
- predicate: A predicate that is tested against all items in the collection.

Query.

    MATCH (a)
    WHERE a.name='Eskil' AND ANY (x IN a.array WHERE x = "one")
    RETURN a

All nodes in the returned paths has at least one `one` value set in the array property named `array`.

Result

a
1 row
`Node[1]{name:"Eskil",age:41,eyes:"blue",array:["one","two","three"]}`

### 13.1.3. NONE

Returns true if the predicate holds for no element in the collection.

Syntax: `NONE(identifier in collection WHERE predicate)`

Arguments:

- collection: An expression that returns a collection
- identifier: This is the identifier that can be used from the predicate.
- predicate: A predicate that is tested against all items in the collection.

Query.

    MATCH p=(n)-[*1..3]->(b)
    WHERE n.name='Alice' AND NONE (x IN nodes(p) WHERE x.age = 25)
    RETURN p

No nodes in the returned paths has a `age` property set to `25`.

Result

p
2 rows
`[Node[2]{name:"Alice",age:38,eyes:"brown"},:KNOWS[1]{},Node[4]{name:"Charlie",age:53,eyes:"green"}]`
`[Node[2]{name:"Alice",age:38,eyes:"brown"},:KNOWS[1]{},Node[4]{name:"Charlie",age:53,eyes:"green"},:KNOWS[3]{},Node[0]{name:"Daniel",age:54,eyes:"brown"}]`

### 13.1.4. SINGLE

Returns true if the predicate holds for exactly one of the elements in the collection.

Syntax: `SINGLE(identifier in collection WHERE predicate)`

Arguments:

- collection: An expression that returns a collection
- identifier: This is the identifier that can be used from the predicate.
- predicate: A predicate that is tested against all items in the collection.

Query.

    MATCH p=(n)-->(b)
    WHERE n.name='Alice' AND SINGLE (var IN nodes(p) WHERE var.eyes = "blue")
    RETURN p

Exactly one node in every returned path will have the `eyes` property set to `"blue"`.

Result

p
1 row
`[Node[2]{name:"Alice",age:38,eyes:"brown"},:KNOWS[0]{},Node[3]{name:"Bob",age:25,eyes:"blue"}]`

Copyright © 2014 Neo Technology

Prev | Up | Next
| Home |