Query by a Field with Ruby

There are a number of fields that you can query by. Here are examples of how to query by Number, Key Text, Document Link, and Select fields.

Number field

The following example shows how to query all the products with the "price" field (Number) less than 100.

Copy
response = api.query(
    Prismic::Predicates.lt("my.product.price", 100)
)
# response contains the response object, response.results holds the documents

You can find more query predicates for Number fields on the Query Predicate Reference page.

Key Text field

The following example shows how to query all the "employee" custom type documents with the "job-title" field (Key Text) equal to either "Developer" or "Designer".

Copy
response = api.query(
    Prismic::Predicates.any("my.employee.job-title", ["Developer", "Designer"])
)
# response contains the response object, response.results holds the documents

To query by a particular document link value, you must use the ID of the document you are looking for.

The following example queries all the "blog_post" custom type documents with the "category_link" field (a Document Link) equal to the category with a document ID of "WNje3SUAAEGBu8bc".

Copy
response = api.query([
    Prismic::Predicates.at("document.type", "blog_post"),
    Prismic::Predicates.at("my.blog_post.category_link", "WNje3SUAAEGBu8bc")]
)
# response contains the response object, response.results holds the documents

Select field

The following demonstrates how to query all the "book" custom type documents with the "author" field (Select) equal to "John Doe". It also sorts the results by their titles.

Copy
response = api.query(
    Prismic::Predicates.at("my.book.author", "John Doe"),
    { "orderings" => "[my.book.title]" }
)
# response contains the response object, response.results holds the documents

Select field within a Group

It is also possible to query by a field inside of a group. The following queries all the "book" custom type documents with the "name" field (Select) equal to "John Doe". In this case the "name" field is in a group field named "author-info".

Copy
response = api.query(
    Prismic::Predicates.at("my.book.author-info.name", "John Doe"),
    { "orderings" => "[my.book.title]" }
)
# response contains the response object, response.results holds the documents