メインコンテンツまでスキップ

Document Service API: フィルター

Document Service API では、クエリ結果をフィルターで絞り込めます。

次の演算子が使えます。

演算子説明
$eq等しい
$eqi等しい(大文字・小文字を区別しない)
$ne等しくない
$nei等しくない(大文字・小文字を区別しない)
$ltより小さい
$lte以下
$gtより大きい
$gte以上
$in配列に含まれる
$notIn配列に含まれない
$contains含む
$notContains含まない
$containsi含む(大文字・小文字を区別しない)
$notContainsi含まない(大文字・小文字を区別しない)
$nullnull である
$notNullnull でない
$between範囲内(両端を含む)
$startsWith前方一致
$startsWithi前方一致(大文字・小文字を区別しない)
$endsWith後方一致
$endsWithi後方一致(大文字・小文字を区別しない)
$orフィルターを OR で結合
$andフィルターを AND で結合
$notフィルターを NOT で結合
Deep filtering with the various APIs

For examples of how to deep filter with the various APIs, please refer to this blog article.

属性オペレーター


$not

内側の条件を否定します。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$not: {
$contains: 'Hello World',
},
},
},
});

$eq

属性が入力値と等しい。

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',
},
});

$eqi

属性が入力値と等しい(大文字・小文字を区別しない)。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$eqi: 'HELLO World',
},
},
});

$ne

属性が入力値と等しくない。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$ne: 'ABCD',
},
},
});

$nei

属性が入力値と等しくない(大文字・小文字を区別しない)。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$nei: 'abcd',
},
},
});

$in

属性の値が入力リストに含まれる。

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'],
},
});

$notIn

属性の値が入力リストに含まれない。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$notIn: ['Hello', 'Hola', 'Bonjour'],
},
},
});

$lt

属性が入力値より小さい。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$lt: 10,
},
},
});

$lte

属性が入力値以下。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$lte: 10,
},
},
});

$gt

属性が入力値より大きい。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$gt: 5,
},
},
});

$gte

属性が入力値以上。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$gte: 5,
},
},
});

$between

属性が 2 つの入力値のあいだ(両端を含む)。例: $between: [1, 3] なら 13 も一致。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
rating: {
$between: [1, 20],
},
},
});

$contains

属性が入力値を含む(大文字・小文字を区別)。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$contains: 'Hello',
},
},
});

$notContains

属性が入力値を含まない(大文字・小文字を区別)。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$notContains: 'Hello',
},
},
});

$containsi

属性が入力値を含む。$containsi は大文字・小文字を区別せず、$contains は区別します。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$containsi: 'hello',
},
},
});

$notContainsi

属性が入力値を含まない。$notContainsi は大文字・小文字を区別せず、$notContains は区別します。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$notContainsi: 'hello',
},
},
});

$startsWith

属性が入力値で始まる(大文字・小文字を区別)。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$startsWith: 'ABCD',
},
},
});

$startsWithi

属性が入力値で始まる(大文字・小文字を区別しない)。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$startsWithi: 'ABCD', // 'abcd' で絞った場合と同様
},
},
});

$endsWith

属性が入力値で終わる(大文字・小文字を区別)。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$endsWith: 'ABCD',
},
},
});

$endsWithi

属性が入力値で終わる(大文字・小文字を区別しない)。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$endsWithi: 'ABCD', // 'abcd' で絞った場合と同様
},
},
});

$null

属性が null である。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$null: true,
},
},
});

$notNull

属性が null でない。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: {
$notNull: true,
},
},
});

論理オペレーター

$and

ネストした条件がすべて true であること。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
$and: [
{
title: 'Hello World',
},
{
createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
},
],
},
});

オブジェクトで複数条件を並べると、暗黙の $and になります。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
title: 'Hello World',
createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
},
});

$or

ネストした条件の少なくとも 1 つが true であること。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
$or: [
{
title: 'Hello World',
},
{
createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
},
],
},
});

$not

ネストした条件を否定します。

const entries = await strapi.documents('api::article.article').findMany({
filters: {
$not: {
title: 'Hello World',
},
},
});
Note

$not は次のように使えます。

  • 論理オペレーター(例: filters: { $not: { // 条件… }}
  • 属性オペレーター(例: filters: { 属性名: { $not: { … } } }
Tip

$and$or$not は、別の $and / $or / $not の内側にネストできます。