Коллекции документов
Раздел База данных — это хранилище JSON-документов рабочего пространства.
Коллекция похожа на таблицу без схемы: у неё есть имя, описание и документы —
произвольные JSON-объекты. При вставке каждый документ получает поле _id
(своё значение можно задать самому).
Когда это нужно
Коллекции стоит брать, когда данные переживают запуск и их надо выбирать по полям: заявки, карточки клиентов, каталог, журнал обработанных сообщений.
Для другого есть другое. Смысловой поиск по тексту документов — это база знаний. Одно значение на сессию (счётчик, флаг, последний выбор) дешевле держать в переменных и памяти, а не в отдельной коллекции.
База данных
orders
1 248 документов · 3,4 МБ использовано
| _id | customer | status | total |
|---|---|---|---|
| a3f1… | acme | paid | 12 400 |
| b7c2… | globex | pending | 980 |
Коллекцию создают кнопкой Новая коллекция; документ можно вставить и отредактировать прямо в интерфейсе (Вставить, Редактировать), а кнопка Запрос прогоняет по коллекции тот же фильтр, который вы потом поставите в ноду.
Ноды
- Исполнение + данные
| Нода | Что делает | Что возвращает |
|---|---|---|
| db_insert | Вставляет документ; массив вставляется поштучно | inserted_ids, count |
| db_find | Выборка по фильтру с сортировкой и постраничностью | docs, count |
| db_find_one | Первый подходящий документ | doc, found |
| db_count | Сколько документов подходит под фильтр | count |
| db_update | Обновляет по фильтру, поддерживает upsert и multi | matched, modified, upserted_id |
| db_delete | Удаляет по фильтру | deleted |
Коллекция выбирается в поле Collection выпадающим списком, а не вводится руками.
Фильтры и обновления
Фильтр — это подмножество языка запросов MongoDB. Доступны операторы сравнения
$eq, $ne, $gt, $gte, $lt, $lte; вхождение $in, $nin; логические
$and, $or, $not, $nor; а также $exists, $size и $regex. К вложенным
полям обращаются через точку — user.name, tags.0.
Выражение обновления понимает $set, $unset, $inc, $mul, $min, $max,
$push, $pull, $addToSet.
{ "status": "pending", "total": { "$gte": 1000 } }
В db_find сортировка задаётся списком пар «поле, направление»
([["created_at", -1]], где 1 — по возрастанию, -1 — по убыванию); limit по
умолчанию 100, есть skip и projection (1 — включить поле, 0 — исключить).
Порт против поля
Значение, пришедшее на входной порт ноды, заменяет фильтр (или документ), настроенный в полях. Если по ребру ничего не пришло — а пустая строка от чисто исполнительного триггера считается именно этим — остаётся настроенное значение. Значение неподходящей формы роняет ноду с внятной ошибкой, а не превращается в «подходит всё».
У db_update на порт можно подать конверт
{"filter": …, "update": …}; любой другой объект считается фильтром.
Квота
Размер коллекций считается в байтах и упирается сразу в два потолка: потолок самого рабочего пространства и тарифный потолок владельца, который считается по всем его пространствам сразу. Рядом живёт лимит на число коллекций. Текущий расход виден в шапке коллекции («использовано») и в разделе Настройки → Использование; значения лимитов — в Лимитах тарифов.