Skip to main content

Overview

The root q object​

The q object (created in the Configuration section) has 3 main purposes:

Start a query chain​

All query chains start with either q.star or q.project(...). All methods of a query chain return a new chainable instance of GroqBuilder. Every chain is immutable, and can be reused if needed.

See the Filters and Projections documentation for more details.

Create reusable fragments​

You can also define reusable "projection fragments" using the q.fragment<T>() method.

See the Fragments documentation for more details.

Provide GROQ functions​

The root q object provides various wrappers for GROQ functions, like q.count(...), q.coalesce(...) and q.select(...).

See the GROQ Functions documentation for more details.

An example query​

const top10ProductsQuery = (
q.star
.filterByType("product")
.order("price asc")
.slice(0, 10)
.project(sub => ({
title: z.string(),
price: z.number(),
images: sub.field("images[]").field("asset").deref().project({
url: z.string(),
altText: z.string(),
})
}))
);