Все ноды/Data/Database
БД: поиск
Поиск документов по MongoDB-style фильтру с sort/limit/skip/projection. Возвращает массив документов.
Тип в графе: db_find
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение + данные
Запускается сразу
Как применять
Берите поиск, когда нужен список документов: заявки в статусе «новая», последние заказы клиента, страница каталога. Один документ по ключу дешевле и понятнее взять db_find_one, а если из всей выборки нужно только число — берите db_count, он не тащит документы наружу. Смысловой поиск по тексту — это не сюда, а rag_query: здесь ищут по точным значениям полей.
Как это работает
Порт Фильтр приносит и запуск ноды, и сам фильтр. Если по ребру пришёл объект — он заменяет фильтр из настроек; если не пришло ничего (пустая строка от чисто исполнительного триггера считается именно этим) — работает фильтр из поля. Значение другой формы — строка, число, список — роняет ноду с внятной ошибкой, а не превращается в «подходит всё».
Поля Фильтр, Сортировка и Проекция — это JSON-редакторы, а не шаблоны: {{ … }} в них не
раскрывается и попадает в запрос как обычная строка. Динамический фильтр собирают перед нодой —
template, выдающий JSON-объект строкой, или
code_javascript, возвращающий объект, — и подают на порт.
На выходе объект docs (массив документов) и count. count — это длина выданной страницы, а не
число совпадений в коллекции: он считается уже после limit и skip.
Частые ошибки
countпринимают за общее число совпадений. Всего подходящих документов — это отдельный запуск db_count с тем же фильтром.- Забыли про лимит. По умолчанию он равен 100: документы «пропадают» ровно на сто первом.
- Постраничность без сортировки.
skipрежет порядок, который никто не гарантировал, — страницы начнут пересекаться. Задавайте сортировку всегда, когда листаете. - Смешанная проекция. Нельзя одновременно включать (
1) и исключать (0) поля — такой запрос отвергается. При включающей проекции_idвозвращается всё равно. - Весь объект уходит в шаблон. Берите
{{ nodes.<id>.output.docs }}, иначе ниже по графу поедет и служебныйcount. - Фильтр без простых равенств. Условия вида
$gt,$in,$regexперебираются по всей коллекции, иlimitэтот перебор не сокращает. Добавьте в фильтр хотя бы одно точное равенство по полю верхнего уровня.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Filterinput | Исполнение + данныеexecute_data | — | Run trigger and dynamic payload (overrides static config). The payload must be an object — a value of any other shape fails the node instead of being ignored. |
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Resultoutput | Исполнение + данныеexecute_data | object |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Коллекцияcollection_id | string | "" | ID коллекции |
Фильтрfilter | object | — | Фильтр-выражение в стиле MongoDB. |
Лимитlimit | integer | 100 | |
Проекцияprojection | object | — | Проекция в стиле MongoDB (1 = включить, 0 = исключить). |
Смещениеskip | integer | 0 | |
Сортировкаsort | array<array> | — | Список пар [field, direction], где direction — 1 (по возрастанию) или -1 (по убыванию); "asc" / "desc" тоже принимаются. Некорректная пара роняет ноду — она не отбрасывается, поэтому запрос никогда не выполнится молча без сортировки. |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.