Node-RED:Библиотеки/node-red-contrib-mongodb

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Модуль «node-red-contrib-mongodb»[1]

Эти ноды предназначены для коммуникации (считывания и записи данных) с базой данных MongoDB.

Этот модуль является форком модуля «node-red-nodes/node-red-node-mongodb».

«Официальная» альтернатива – https://github.com/node-red/node-red-nodes.

Альтернатива от сообщества – https://github.com/ozomer/node-red-contrib-mongodb2.

Установка

Запустите в пользовательской папке Node-RED (обычно это «~/.node-red») команду ниже:

npm install node-red-contrib-mongodb

Кроме того, модуль можно установить через меню «Manage palette» в редакторе Node-RED.

Требования

Для работы с этим модулем необходим запущенный MongoDB-сервер. Более подробно смотрите на сайте MongoDB.

Использование

Ноды этого модуля предназначены для записи и считывания данных с локального экземпляра MongoDB.

Кроме того, опционально можно задать (при помощи функции) следующие свойства:

  • «msg.projection» – объект, в котором задается, какие поля нужно вернуть
  • «msg.sort» – объект
  • «msg.limit» – число
  • «msg.skip» – число

Метод для работы с коллекцией можно задать или в настройках ноды, или в свойстве «msg.collection». Значение, заданное в настройках ноды, будет иметь приоритет над значением, заданным в «msg.collection».

О методах для работы с коллекциями читайте тут.

MongoDB принимает только объекты.

Операция «find» делает запрос к коллекции, используя «msg.payload» в качестве параметра «query» – как в функции find().

Операция «count» возвращает количество документов в коллекции, соответствующих критерию отбора. Свойство «msg.payload» используется как параметр «query» (критерий отбора).

Операция «aggregate» предоставляет доступ к пайплайну агрегации (совокупности этапов, выполняемых при агрегации данных). Свойство «msg.payload» используется как параметр «pipeline» (массив, содержащий информацию о операциях/этапах агрегации данных).

Операция «save» обновляет существующий объект или вставляет новый объект (если заданного объекта не существует).

Операция «insert» вставляет новый объект.

Операция «update» модифицирует существующий объект или объекты. Свойство «msg.query» используется для выбора объектов, которые нужно модифицировать, а свойство «msg.payload» – для хранения изменений, которые нужно внести. Если модифицируемого объекта не существует, он может быть создан и добавлен в базу данных. Кроме того, с помощью этой операции можно обновить несколько объектов.

Операция «remove» удаляет объекты. Свойство «msg.payload» используется в качестве параметра «query», где задается критерий, которому должны соответствовать удаляемые объекты. Если оставить это свойство пустым, это удалит все объекты в коллекции. По умолчанию MongoDB создает свойство «msg._id», куда записывается сегментный ключ (shard key) – поэтому неоднократный ввод одного и того же сообщения будет каждый раз создавать новые записи в базе данных.

Если вам это не нужно (т.е. вы хотите, чтобы в результате неоднократного ввода одного и того же сообщения оно просто переписывалось), свойство «msg._id» нужно сделать константой в коде ноды «Function», стоящей перед нодой «MongoDB-node». При этом важно учитывать уровень. Если вы сохраняете только свойство «msg.payload», то свойство «_id» нужно добавить именно к нему – «msg.payload._id», а если вы сохраняете все сообщение «msg», то свойство «_id» нужно добавить к нему – «msg._id».

Это может быть и уникальная константа, и константа, созданная на основе какого-то другого свойства сообщения.

В настоящий момент размер коллекции никак не ограничен...

Результат будет возвращен в «msg.payload».

Ноды

Резерв

См.также

Внешние ссылки