文档服务 API:过滤器
页面摘要: 文档服务 API 提供属性运算符(
$eq、$lt、$contains等)和逻辑运算符($and、$or、$not),用于过滤查询结果,并支持区分大小写与不区分大小写的匹配。
文档服务 API 提供了过滤结果的能力。
可用的运算符如下:
| Operator | Description |
|---|---|
$eq | 等于 |
$eqi | 等于(不区分大小写) |
$ne | 不等于 |
$nei | 不等于(不区分大小写) |
$lt | 小于 |
$lte | 小于或等于 |
$gt | 大于 |
$gte | 大于或等于 |
$in | 包含在数组中 |
$notIn | 不包含在数组中 |
$contains | 包含 |
$notContains | 不包含 |
$containsi | 包含(不区分大小写) |
$notContainsi | 不包含(不区分大小写) |
$null | 为 null |
$notNull | 不为 null |
$between | 在……之间 |
$startsWith | 以……开头 |
$startsWithi | 以……开头(不区分大小写) |
$endsWith | 以……结尾 |
$endsWithi | 以……结尾(不区分大小写) |
$or | 以「或」表达式连接过滤器 |
$and | 以「与」表达式连接过滤器 |
$not | 以「非」表达式连接过滤器 |
使用各类 API 进行深度过滤
如需各类 API 深度过滤的示例,请参阅这篇博客文章。
属性运算符
对嵌套条件取反。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$not: {
$contains: 'Hello World',
},
},
},
});
属性等于输入值。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$eq: 'Hello World',
},
},
});
简写
// 可以省略 $eq:
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: 'Hello World',
},
});
属性等于输入值(不区分大小写)。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$eqi: 'HELLO World',
},
},
});
属性不等于输入值。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$ne: 'ABCD',
},
},
});
属性不等于输入值(不区分大小写)。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$nei: 'abcd',
},
},
});
属性包含在输入列表中。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$in: ['Hello', 'Hola', 'Bonjour'],
},
},
});
简写
// 传入值数组时可以省略 $in:
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: ['Hello', 'Hola', 'Bonjour'],
},
});
属性不包含在输入列表中。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$notIn: ['Hello', 'Hola', 'Bonjour'],
},
},
});
属性小于输入值。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$lt: 10,
},
},
});
属性小于或等于输入值。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$lte: 10,
},
},
});
属性大于输入值。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$gt: 5,
},
},
});
属性大于或等于输入值。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$gte: 5,
},
},
});
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$between: [1, 20],
},
},
});
属性包含输入值(区分大小写)。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$contains: 'Hello',
},
},
});
属性不包含输入值(区分大小写)。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$notContains: 'Hello',
},
},
});
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$containsi: 'hello',
},
},
});
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$notContainsi: 'hello',
},
},
});
属性以输入值开头(区分大小写)。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$startsWith: 'ABCD',
},
},
});
属性以输入值开头(不区分大小写)。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$startsWithi: 'ABCD', // 将返回与使用 'abcd' 过滤相同的结果
},
},
});
属性以输入值结尾(区分大小写)。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$endsWith: 'ABCD',
},
},
});
属性以输入值结尾(不区分大小写)。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$endsWith: 'ABCD', // 将返回与使用 'abcd' 过滤相同的结果
},
},
});
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$null: true,
},
},
});
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$notNull: true,
},
},
});
逻辑运算符
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
$and: [
{
title: 'Hello World',
},
{
createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
},
],
},
});
隐式 $and
// 传入带有嵌套条件的对象时,会隐式使用 $and:
const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: 'Hello World',
createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
},
});
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
$or: [
{
title: 'Hello World',
},
{
createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
},
],
},
});
对嵌套条件取反。
JavaScript
const entries = await strapi.documents('api::article.article').findMany({
filters: {
$not: {
title: 'Hello World',
},
},
});
NOTE
$not 可用作:
- 逻辑运算符(例如
filters: { $not: { // 条件... }}) - 属性运算符(例如
filters: { attribute-name: $not: { ... } })。
TIP
$and、$or 和 $not 运算符可以嵌套在另一个 $and、$or 或 $not 运算符内部。