|
|
@@ -259,6 +259,69 @@ schema.defineModel({
|
|
|
- `hasMany` - обратная сторона `belongsTo` по принципу "один ко многим"
|
|
|
- `referencesMany` - документ содержит массив с идентификаторами целевой модели
|
|
|
|
|
|
+## Фильтрация
|
|
|
+
|
|
|
+Некоторые методы репозитория принимают объект настроек влияющий
|
|
|
+на возвращаемый результат. Максимально широкий набор таких настроек
|
|
|
+имеет первый параметр метода `find`, где ожидается объект содержащий
|
|
|
+набор опций указанных ниже.
|
|
|
+
|
|
|
+- `where: object` объект выборки
|
|
|
+- `order: string[]` указание порядка
|
|
|
+- `limit: number` ограничение количества документов
|
|
|
+- `skip: number` пропуск документов
|
|
|
+- `fields: string[]` выбор необходимых полей документа
|
|
|
+- `include: object` включение связанных данных в результат (см. Связи)
|
|
|
+
|
|
|
+### where
|
|
|
+
|
|
|
+Параметр является объектом условий выборки и поддерживает широкий
|
|
|
+набор операторов сравнения.
|
|
|
+
|
|
|
+`{prop: 'bar'}` поиск по значению поля `prop`
|
|
|
+`{prop: {eq: 'bar'}}` оператор равенства `eq`
|
|
|
+`{prop: {neq: 'bar'}}` оператор неравенства `neq`
|
|
|
+`{prop: {gt: 5}}` оператор "больше" `gt`
|
|
|
+`{prop: {lt: 10}}` оператор "меньше" `lt`
|
|
|
+`{prop: {gte: 5}}` оператор "больше или равно" `gte`
|
|
|
+`{prop: {lte: 10}}` оператор "меньше или равно" `lte`
|
|
|
+`{prop: {inq: ['bar', 'baz']}}` равенство одного из значений `inq`
|
|
|
+`{prop: {nin: ['bar', 'baz']}}` исключение значений массива `nin`
|
|
|
+`{prop: {between: [5, 10]}}` оператор диапазона `between`
|
|
|
+`{prop: {exists: true}}` оператор наличия значения `exists`
|
|
|
+`{prop: {like: 'bar'}}` оператор поиска подстроки `like`
|
|
|
+`{prop: {ilike: 'BaR'}}` регистронезависимая версия `ilike`
|
|
|
+`{prop: {nlike: 'bar'}}` оператор исключения подстроки `nlike`
|
|
|
+`{prop: {nilike: 'BaR'}}` регистронезависимая версия `nilike`
|
|
|
+`{prop: {regexp: 'ba.+'}}` оператор регулярного выражения `regexp`
|
|
|
+`{prop: {regexp: 'ba.+', flags: 'i'}}` флаги регулярного выражения
|
|
|
+
|
|
|
+Условия можно объединить операторами `and`, `or` и `nor`.
|
|
|
+
|
|
|
+**Пример**
|
|
|
+
|
|
|
+Подсчет документов методом `count` согласно условиям выборки.
|
|
|
+
|
|
|
+```js
|
|
|
+const count = await rep.count({
|
|
|
+ authorId: 251,
|
|
|
+ publishedAt: {
|
|
|
+ lte: '2023-12-02T14:00:00.000Z',
|
|
|
+ },
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
+Удаление документов методом `delete` с применением оператора `or`
|
|
|
+
|
|
|
+```js
|
|
|
+const count = await rep.delete({
|
|
|
+ or: [
|
|
|
+ {sent: false},
|
|
|
+ {title: {like: 'draft'}},
|
|
|
+ ],
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
## Тесты
|
|
|
|
|
|
```bash
|