Все ноды/Data/Database

Записи: найти одну

Первый документ, соответствующий фильтру. Возвращает объект {doc, found}: doc — документ или null, found — нашёлся ли он.

Записи: найти одну▶
ФильтрРезультаты поиска

Тип в графе: db_find_one

Exec

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

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

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

Минимальный рабочий сценарий

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

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

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

Берите эту ноду, когда документ ожидается один: карточка клиента по user_id, заказ по номеру, настройка по ключу. Она возвращает готовый объект, а не массив, — дальше по графу не нужен ни цикл, ни обращение по индексу. Если подходящих документов много и важно, какой именно вы получите, берите db_find с сортировкой и лимитом 1: здесь сортировки нет.

Как это работает

Порт Фильтр приносит и запуск, и сам фильтр; объект с ребра заменяет фильтр из настроек, пустой триггер оставляет настроенный. Поля Фильтр и Какие поля вернуть — JSON-редакторы: {{ … }} в них не раскрывается, динамический фильтр собирают нодой template (JSON-объект строкой) или code_javascript (возвращает объект) и подают на порт.

На выходе два поля: doc — сам документ или null, и found — нашёлся ли он. Отсутствие документа это успешный запуск, а не ошибка: ветку «нет такого» рисуют через if по {{ nodes.<id>.output.found }}.

Частые ошибки

  • Ждут ошибку, когда документа нет. Нода отработает успешно с found: false; если ниже по графу нет проверки, дальше поедет null и упадёт уже другая нода — в неожиданном месте.
  • Читают поля до проверки found. Сначала развилка по found, потом {{ nodes.<id>.output.doc.<поле> }}.
  • «Первый» понимают как «новейший». Порядок документов не задан — это тот, в котором их вернуло хранилище. Нужен свежайший — db_find, сортировка [["created_at", -1]], лимит 1.
  • Фильтр подходит нескольким документам. Вы получите один из них, и на следующем запуске это может быть другой. Фильтруйте по полю, которое действительно уникально.
  • Смешанная проекция. Одновременно включать (1) и исключать (0) поля нельзя — запрос отвергается. При включающей проекции _id приходит всегда.

Входы

ПортПроводДанныеПримечания
ФильтрinputИсполнение + данныеexecute_data—

Пришедшее сюда значение ЗАМЕНЯЕТ настроенное в форме — не дополняет его, и обязано быть объектом (значение любой другой формы роняет шаг, а не игнорируется молча). Чтобы запустить шаг и сохранить настроенное, ведите тонкое ребро «исполнение», а переменные части пишите шаблонами {{ }} прямо в поле.

Выходы

ПортПроводДанныеПримечания
Результаты поискаoutputИсполнение + данныеexecute_dataobject

Настройки

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

ID коллекции

Фильтрfilterobject—

Условие отбора в синтаксисе MongoDB. Возвращается первая подходящая запись.

перекрывается портом: input

Какие поля вернутьprojectionobject—

Какие поля вернуть (1 — включить, 0 — исключить). Пусто — все.

Общие поля

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

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