Document Service API: Filters
The Document Service API offers the ability to filter results.
The following operators are available:
| Operator | Description | 
|---|---|
| $eq | Equal | 
| $eqi | Equal (case-insensitive) | 
| $ne | Not equal | 
| $nei | Not equal (case-insensitive) | 
| $lt | Less than | 
| $lte | Less than or equal to | 
| $gt | Greater than | 
| $gte | Greater than or equal to | 
| $in | Included in an array | 
| $notIn | Not included in an array | 
| $contains | Contains | 
| $notContains | Does not contain | 
| $containsi | Contains (case-insensitive) | 
| $notContainsi | Does not contain (case-insensitive) | 
| $null | Is null | 
| $notNull | Is not null | 
| $between | Is between | 
| $startsWith | Starts with | 
| $startsWithi | Starts with (case-insensitive) | 
| $endsWith | Ends with | 
| $endsWithi | Ends with (case-insensitive) | 
| $or | Joins the filters in an "or" expression | 
| $and | Joins the filters in an "and" expression | 
| $not | Joins the filters in an "not" expression | 
Attribute operatorsβ
$notβ
Negates the nested condition(s).
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $not: {
        $contains: 'Hello World',
      },
    },
  },
});
$eqβ
Attribute equals input value.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $eq: 'Hello World',
    },
  },
});
$eq can be omitted:
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: 'Hello World',
  },
});
$eqiβ
Attribute equals input value (case-insensitive).
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $eqi: 'HELLO World',
    },
  },
});
$neβ
Attribute does not equal input value.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $ne: 'ABCD',
    },
  },
});
$neiβ
Attribute does not equal input value (case-insensitive).
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $nei: 'abcd',
    },
  },
});
$inβ
Attribute is contained in the input list.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $in: ['Hello', 'Hola', 'Bonjour'],
    },
  },
});
$in can be omitted when passing an array of values:
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: ['Hello', 'Hola', 'Bonjour'],
  },
});
$notInβ
Attribute is not contained in the input list.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $notIn: ['Hello', 'Hola', 'Bonjour'],
    },
  },
});
$ltβ
Attribute is less than the input value.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    rating: {
      $lt: 10,
    },
  },
});
$lteβ
Attribute is less than or equal to the input value.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    rating: {
      $lte: 10,
    },
  },
});
$gtβ
Attribute is greater than the input value.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    rating: {
      $gt: 5,
    },
  },
});
$gteβ
Attribute is greater than or equal to the input value.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    rating: {
      $gte: 5,
    },
  },
});
$betweenβ
Attribute is between the 2 input values, boundaries included (e.g., $between[1, 3] will also return 1 and 3).
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    rating: {
      $between: [1, 20],
    },
  },
});
$containsβ
Attribute contains the input value (case-sensitive).
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $contains: 'Hello',
    },
  },
});
$notContainsβ
Attribute does not contain the input value (case-sensitive).
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $notContains: 'Hello',
    },
  },
});
$containsiβ
Attribute contains the input value. $containsi is not case-sensitive, while $contains is.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $containsi: 'hello',
    },
  },
});
$notContainsiβ
Attribute does not contain the input value. $notContainsi is not case-sensitive, while $notContains is.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $notContainsi: 'hello',
    },
  },
});
$startsWithβ
Attribute starts with input value.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $startsWith: 'ABCD',
    },
  },
});
$endsWithβ
Attribute ends with input value.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $endsWith: 'ABCD',
    },
  },
});
$nullβ
Attribute is null.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $null: true,
    },
  },
});
$notNullβ
Attribute is not null.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: {
      $notNull: true,
    },
  },
});
Logical operatorsβ
$andβ
All nested conditions must be true.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    $and: [
      {
        title: 'Hello World',
      },
      {
        createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
      },
    ],
  },
});
$and will be used implicitly when passing an object with nested conditions:
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    title: 'Hello World',
    createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
  },
});
$orβ
One or many nested conditions must be true.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    $or: [
      {
        title: 'Hello World',
      },
      {
        createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
      },
    ],
  },
});
$notβ
Negates the nested conditions.
Example
const entries = await strapi.documents('api::article.article').findMany({
  filters: {
    $not: {
      title: 'Hello World',
    },
  },
});
$not can be used as:
- a logical operator (e.g. in filters: { $not: { // conditions⦠}})
- an attribute operator (e.g. in filters: { attribute-name: $not: { β¦ } }).
$and, $or and $not operators are nestable inside of another $and, $or or $not operator.