Все ноды/Data/Database
БД: обновление
Обновляет документы по фильтру MongoDB-style update-выражением ($set, $inc, $push, ...). Поддерживает upsert и multi.
Тип в графе: db_update
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение + данные
Запускается сразу
Как применять
Обновление меняет существующие документы: перевести заявку в другой статус, увеличить счётчик, дописать элемент в массив. Включённый 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_data | object |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Коллекцияcollection_id | string | "" | ID коллекции |
Фильтрfilter | object | — | |
Обновить несколькоmulti | boolean | false | |
Обновлениеupdate | object | — | MongoDB-style update-выражение ($set, $inc, $push, ...). |
Upsertupsert | boolean | false |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.