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

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] なら 1 と 3 も一致。

例

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 の内側にネストできます。