Skip to main content
Version: Next

QueryBuilder

The QueryBuilder provides a fluent API for constructing type-safe Cypher queries.

Overview

const query = client.query()
.match('(p:Person)')
.where({ age: { $gte: 18 } })
.return('p.name, p.age')
.orderBy('p.age DESC')
.limit(10);

const results = await query.execute();

Methods

match(pattern: string)

Add a MATCH clause to the query.

query.match('(p:Person)')
query.match('(p:Person)-[r:KNOWS]->(f:Person)')

where(conditions: object | string)

Add WHERE conditions to the query.

// Object syntax
query.where({ name: 'Alice', age: { $gte: 18 } })

// String syntax
query.where('p.age > 18 AND p.city = "New York"')

create(pattern: string)

Add a CREATE clause.

query.create('(p:Person {name: "Alice", age: 30})')

return(fields: string)

Specify what to return from the query.

query.return('p.name, p.age')
query.return('count(p) as total')

orderBy(field: string)

Add ordering to the results.

query.orderBy('p.name')
query.orderBy('p.age DESC')

limit(count: number)

Limit the number of results.

query.limit(10)

skip(count: number)

Skip a number of results (for pagination).

query.skip(20)

execute()

Execute the query and return results.

const results = await query.execute();

Parameter Management

setParam(key: string, value: any)

Set a parameter for the query.

query
.match('(p:Person)')
.where('p.name = $name')
.setParam('name', 'Alice')

Advanced Features

Raw Cypher

For complex queries, you can use raw Cypher:

query.raw(`
MATCH (p:Person)-[:KNOWS*1..3]-(friend)
WHERE p.name = $name
RETURN DISTINCT friend.name
`).setParam('name', 'Alice')

Query Optimization

The QueryBuilder automatically optimizes queries for Apache AGE.

Examples

See Basic Queries for comprehensive examples.