Skip to main content

使用查询引擎 API 进行批量操作

¥Bulk Operations with the Query Engine API

提醒

在大多数情况下,你不应使用查询引擎 API,而应使用 文档服务 API

¥In most cases you should not use the Query Engine API and rather use the Document Service API.

仅当你确切知道自己在做什么时才使用查询引擎 API,例如,如果你想使用直接与数据库的唯一行交互的底层 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.

请记住,查询引擎 API 不了解最高级的 Strapi 5 功能,如草稿和发布、国际化、内容历史记录等。

¥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.

提醒

为了避免性能问题,不允许对关系进行批量操作。

¥To avoid performance issues, bulk operations are not allowed on relations.

createMany()

创建多个条目。

¥Creates multiple entries.

语法:createMany(parameters) => { count: number, ids: id[] }

¥Syntax: createMany(parameters) => { count: number, ids: id[] }

参数

¥Parameters

范围类型描述
data对象数组输入数据数组
提醒
  • MySQL 将仅返回包含最后插入的 id 的一个 id 数组,而不是整个列表。

    ¥MySQL will only return an array of one id containing the last inserted id, not the entire list.

  • 在 Strapi v4.9.0 之前,createMany() 仅返回 count

    ¥Prior to Strapi v4.9.0, createMany() only returns the count.

示例

¥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.

语法:updateMany(parameters) => { count: number }

¥Syntax: updateMany(parameters) => { count: number }

参数

¥Parameters

范围类型描述
whereWhereParameter使用 过滤器
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.

语法:deleteMany(parameters) => { count: number }

¥Syntax: deleteMany(parameters) => { count: number }

参数

¥Parameters

范围类型描述
whereWhereParameter使用 过滤器

示例

¥Example

await strapi.db.query("api::blog.article").deleteMany({
where: {
title: {
$startsWith: "v3",
},
},
});

// { count: 42 }

聚合

¥Aggregations

count()

计算与参数匹配的条目数。

¥Counts entries matching the parameters.

语法:count(parameters) => number

¥Syntax: count(parameters) => number

参数

¥Parameters

范围类型描述
whereWhereParameter使用 过滤器


const count = await strapi.db.query("api::blog.article").count({


where: {
title: {
$startsWith: "v3",
},
},
});

// 12