import ConsiderDocumentService from '/docs/snippets/consider-document-service.md'
import QueryEnginePrereqs from '/docs/snippets/query-engine-prereqs.md'
Bulk Operations with the Query Engine API#
Bulk Operations with the Query Engine API enable you to create, update, delete, and count multiple entries at once using createMany(), updateMany(), deleteMany(), and count() methods.
To avoid performance issues, bulk operations are not allowed on relations.
createMany()#
Creates multiple entries.
Syntax: createMany(parameters) => { count: number, ids: id[] }
Parameters#
| Parameter | Type | Description |
|---|---|---|
data | Array of objects | Array of input data |
- MySQL will only return an array of one id containing the last inserted id, not the entire list.
- Prior to Strapi v4.9.0,
createMany()only returns thecount.
Example#
await strapi.db.query("api::blog.article").createMany({
data: [
{
title: "ABCD",
},
{
title: "EFGH",
},
],
});
// { count: 2 , ids: [1,2]}
updateMany()#
Updates multiple entries matching the parameters.
Syntax: updateMany(parameters) => { count: number }
Parameters#
| Parameter | Type | Description |
|---|---|---|
where | WhereParameter | Filters to use |
data | Object | Input data |
Example#
await strapi.db.query("api::shop.article").updateMany({
where: {
price: 20,
},
data: {
price: 18,
},
});
// { count: 42 }
deleteMany()#
Deletes multiple entries matching the parameters.
Syntax: deleteMany(parameters) => { count: number }
Parameters#
| Parameter | Type | Description |
|---|---|---|
where | WhereParameter | Filters to use |
Example#
await strapi.db.query("api::blog.article").deleteMany({
where: {
title: {
$startsWith: "v3",
},
},
});
// { count: 42 }
Aggregations#
count()#
Counts entries matching the parameters.
Syntax: count(parameters) => number
Parameters#
| Parameter | Type | Description |
|---|---|---|
where | WhereParameter | Filters to use |
const count = await strapi.db.query("api::blog.article").count({
where: {
title: {
$startsWith: "v3",
},
},
});
// 12