WHERE

Filter elements based on specific conditions.

::WHERE(<condition>)

The condition in the WHERE step must evaluate to a boolean value. If the condition is not met, the element will be filtered out.

Example:

QUERY GetAdultUsers {
    // Filter to only users over 18
    adult_users <- N<User>::WHERE(_::{age}::GT(18))
    RETURN adult_users
}

Comparison Operations

The following operations can be used to compare values. EQ and NEQ can be used to compare strings, booleans, and numbers. GT, GTE, LT, and LTE can only be used to compare numbers.

String, Boolean, and Number Operations

OperationDescriptionExample
::EQ(value)Equals::WHERE(_::{status}::EQ("active"))
::NEQ(value)Not equals::WHERE(_::{age}::NEQ(25))

Number Operations

OperationDescriptionExample
::GT(value)Greater than::WHERE(_::{age}::GT(25))
::LT(value)Less than::WHERE(_::{age}::LT(30))
::GTE(value)Greater than or equal::WHERE(_::{rating}::GTE(4.5))
::LTE(value)Less than or equal::WHERE(_::{priority}::LTE(2))

EXISTS

Returns true if a traversal has any results. Otherwise, it returns false.

EXISTS(<traversal>)

Example:

QUERY GetUsersWithFollowers() {
    users <- N<User>::WHERE(EXISTS(_::In<Follows>))
    RETURN users
}

Multiple filter conditions

In the case where you want to filter by multiple conditions, instead of writing multiple WHERE steps, you can use the AND and OR operations to chain the conditions together.

Both AND and OR take a list of expressions that evaluate to a boolean value. AND and OR will return a boolean value themselves.

AND

::WHERE(AND(<condition1>, <condition2>))

OR

::WHERE(OR(<condition1>, <condition2>))