メインコンテンツまでスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。

Entity Service API でのフィルタリング

Caution

The Entity Service API is deprecated in Strapi v5. Please consider using the Document Service API instead.

Entity Service API では、findMany() の結果をフィルタリングできます。

filters パラメータで結果を絞り込みます。filters論理演算子属性演算子 を受け取り、各演算子は $ で始まります。

Deep filtering with the various APIs

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

論理演算子

$and

ネストした条件がすべて true である必要があります。

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

ネストした条件をオブジェクトで渡すと、暗黙的に $and が使われます。

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

$or

ネストした条件の 1 つ以上が true である必要があります。

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

$not

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

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

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

  • 論理演算子(例: filters: { $not: { // conditions… }}
  • 属性演算子(例: filters: { attribute-name: $not: { … } })。
Tip

$and$or$not は互いにネストできます。

属性演算子

Caution

これらの演算子は Strapi ではなくデータベース側で比較されるため、利用するデータベース実装により結果が異なる場合があります。

$not

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

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

$eq

属性が入力値と等しい。

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

$eq は省略できます。

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

$eqi

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

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

$ne

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

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

$nei

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

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

$in

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

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

値の配列を渡す場合は $in を省略できます。

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

$notIn

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

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

$lt

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

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

$lte

属性が入力値以下。

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

$gt

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

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

$gte

属性が入力値以上。

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

$between

属性が 2 つの入力値のあいだ(境界を含む)。例: $between[1, 3]13 も返します。

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

$contains

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

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

$notContains

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

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

$containsi

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

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

$notContainsi

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

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

$startsWith

属性が入力値で始まる。

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

$endsWith

属性が入力値で終わる。

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

$null

属性が null である。

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

$notNull

属性が null でない。

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