Все ноды/Data/Database

Записи: добавить

Вставка документа (или массива документов — тогда пакетная вставка) в коллекцию NoSQL-стора. Возвращает inserted_ids.

Записи: добавить▶
ДокументИтог действия

Тип в графе: db_insert

Exec

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

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

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

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

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

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

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

Вставка добавляет новые документы: заявку из чата, строку журнала, распознанную анкету. Она всегда пишет новое — проверки «а вдруг уже есть» у неё нет. Если запись может уже существовать и повторный запуск не должен плодить дубли, берите db_update с включённым полем Создать, если нет: он обновит найденный документ или создаст его один раз.

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

Порт Документ приносит и запуск, и сам документ. Пришёл объект — вставляется он; ничего не пришло — вставляется документ из поля Документ(ы). Массив объектов на порту или в поле означает массовую вставку: форма значения — единственное, что решает, вставляется один документ или несколько, отдельного переключателя нет.

Документом считается объект или строка с JSON-объектом. Текст, число или ответ модели «как есть» роняют ноду: соберите словарь заранее — code_javascript возвращает объект, template выдаёт JSON-объект строкой.

Каждому документу присваивается _id, если его не задали в самом документе. На выходе — inserted_ids (массив идентификаторов, в том же порядке) и count.

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

  • Ждут защиты от дублей. Один и тот же запуск дважды — два документа. Идемпотентная запись делается через db_update с полем Создать, если нет по уникальному ключу.
  • На порт подаётся ответ модели. Строка «Заявка принята» — не документ. Оберните её в объект или попросите модель структурированный вывод.
  • Свой _id берут из ненадёжного источника. Это ключ строки в хранилище: вторая вставка с тем же значением не пройдёт. Либо не задавайте _id вовсе, либо стройте его так, чтобы он не повторялся.
  • Пустой массив принимают за ошибку. Он вставляет ноль документов и отчитывается count: 0 — запуск успешен. Проверяйте count, если пустой список для вас значим.
  • Складывают в коллекцию файлы и длинные тексты. У документа есть предельный размер (по умолчанию 1 МиБ), а у пространства — квота по байтам. Файлы храните в файловом хранилище, а в документе — ссылку.

Входы

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

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

Выходы

ПортПроводДанныеПримечания
Итог действияoutputИсполнение + данныеexecute_dataobject

Настройки

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

ID коллекции

Документыdocobject | array—

Статический документ или список документов для массовой вставки. Значение, пришедшее на входной порт `Doc`, перекрывает это поле.

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

Общие поля

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

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

Готовые примеры с этой нодой