Все ноды/Data/Database

БД: обновление

Обновляет документы по фильтру MongoDB-style update-выражением ($set, $inc, $push, ...). Поддерживает upsert и multi.

БД: обновление
InputResult

Тип в графе: db_update

Exec

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

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

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

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

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

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

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

Обновление меняет существующие документы: перевести заявку в другой статус, увеличить счётчик, дописать элемент в массив. Включённый Upsert превращает ноду в «создать или обновить» — это единственный способ записать документ по ключу так, чтобы повторный запуск не оставил дубль (у db_insert такой проверки нет). Флаг Обновить несколько переключает ноду с одного документа на все подходящие.

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

Нужны два выражения: Фильтр — какие документы взять, Обновление — что с ними сделать ($set, $inc, $push, $unset, $addToSet и другие операторы). Порт Input принимает конверт {"filter": …, "update": …} — тогда с ребра приезжают обе части; любой другой объект считается фильтром, а выражение обновления остаётся из настроек.

На выходе три поля: matched (сколько документов подошло), modified (сколько реально изменилось) и upserted_id (идентификатор созданного документа, если сработал upsert).

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

  • Выражение без оператора. {"status": "paid"} без $set — это не правка поля, а замена всего документа: остальные поля исчезнут, сохранится только _id. Пишите {"$set": {"status": "paid"}}.
  • Успех проверяют по modified. Ноль там означает не только «не нашли»: документ с уже нужным значением не переписывается, а при upsert счётчик тоже остаётся нулевым — новый документ виден в upserted_id. Смотрите на все три поля.
  • Забыли включить «Обновить несколько». С выключенным флагом изменится ровно один документ из подошедших, и какой именно — не определено.
  • Ждут, что upsert перенесёт весь фильтр в новый документ. В него попадают только простые равенства верхнего уровня; условия вида {"$gt": …} и пути через точку не переносятся — задавайте такие поля явно в $set.
  • Шаблоны в полях. Фильтр и Обновление — JSON-редакторы, {{ … }} в них не раскрывается. Динамику собирают code_javascript или template и подают на порт.
  • $inc по нечисловому полю. Если в поле лежит строка, нода упадёт; приводите тип при записи.

Входы

ПортПроводДанныеПримечания
InputinputИсполнение + данные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

Обновить несколькоmultibooleanfalse

Обновлениеupdateobject

MongoDB-style update-выражение ($set, $inc, $push, ...).

Upsertupsertbooleanfalse

Общие поля

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

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