Все ноды/Data/Database

БД: поиск

Поиск документов по MongoDB-style фильтру с sort/limit/skip/projection. Возвращает массив документов.

БД: поиск
FilterResult

Тип в графе: db_find

Exec

Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий воркфлоу

Вход
БД: поиск
Выход
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Запускается сразу

Как применять

Берите поиск, когда нужен список документов: заявки в статусе «новая», последние заказы клиента, страница каталога. Один документ по ключу дешевле и понятнее взять 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_dataobject

Настройки

ПолеТипПо умолчаниюОписание
Коллекцияcollection_idstring""

ID коллекции

Фильтрfilterobject

Фильтр-выражение в стиле MongoDB.

Лимитlimitinteger100

Проекцияprojectionobject

Проекция в стиле MongoDB (1 = включить, 0 = исключить).

Смещениеskipinteger0

Сортировкаsortarray<array>

Список пар [field, direction], где direction — 1 (по возрастанию) или -1 (по убыванию); "asc" / "desc" тоже принимаются. Некорректная пара роняет ноду — она не отбрасывается, поэтому запрос никогда не выполнится молча без сортировки.

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.