Query Engine API
The Strapi backend provides a Query Engine API to interact with the database layer at a lower level.
In most cases you should not use the Query Engine API and rather use the Document Service API.
Only use the Query Engine API if you exactly know what you are doing, for instance if you want to use a lower-level API that directly interacts with unique rows of the database.
Please keep in mind that the Query Engine API is not aware of the most advanced Strapi 5 features like Draft & Publish, Internationalization, Content History, and possibly more.
Before diving deeper into the Query Engine API documentation, it is recommended that you read the following introductions:
- the backend customization introduction,
- and the Content APIs introduction.
Basic usage
The Query Engine is available through strapi.db.query
:
strapi.db.query('api::blog.article').findMany({ // uid syntax: 'api::api-name.content-type-name'
where: {
title: {
$startsWith: '2021',
$endsWith: 'v4',
},
},
populate: {
category: true,
},
});
Available operations
The Query Engine allows the following operations on database entries:
📄️ Single operations
Create, read, update, and delete single database entries with the Query Engine API.
📄️ Bulk operations
Create, read, update, and delete multiple database entries with the Query Engine API.
📄️ Filters
Get exactly what you need by filtering database entries with the Query Engine API.
📄️ Populate
Get additional data with your Query Engine API queries by populating relations.
📄️ Order & Pagination
Sort and paginate the results of your Query Engine API queries.