Учебник по Node.js

ГЛАВНАЯ СТРАНИЦА Node.js Введение в Node.js Node.js Начало работы Модули Node.js HTTP-модуль Node.js Файловая система Node.js URL-модуль Node.js Node.js NPM События Node.js Загрузить файлы Node.js Электронная почта Node.js

Node.js MySQL

Начать работу с MySQL MySQL Создать базу данных MySQL Создать таблицу MySQL вставить в MySQL выбрать из MySQL Где Порядок MySQL MySQL Удалить Таблица удаления MySQL Обновление MySQL Лимит MySQL MySQL присоединиться

Node.js MongoDB

Начать работу с MongoDB MongoDB Создать базу данных MongoDB Создать коллекцию Вставка MongoDB MongoDB Найти Запрос MongoDB Сортировка MongoDB MongoDB Удалить Коллекция MongoDB Drop Обновление MongoDB Лимит MongoDB Присоединиться к MongoDB

Малиновый Пи

Начать работу с RasPi Введение в RasPi GPIO Мигающий светодиод RasPi Светодиод RasPi и кнопка Проточные светодиоды RasPi Веб-сокет RasPi Веб-сокет со светодиодной подсветкой RasPi RGB Компоненты RasPi

Справочник по Node.js

Встроенные модули

Node.js Обновление MongoDB


Обновить документ

Вы можете обновить запись или документ, как это называется в MongoDB, с помощью updateOne()метода.

Первый параметр updateOne()метода — это объект запроса, определяющий, какой документ нужно обновить.

Примечание. Если запрос находит более одной записи, обновляется только первое вхождение.

Второй параметр — это объект, определяющий новые значения документа.

Пример

Обновите документ с адресом «Долина 345» на name="Mickey" и address="Canyon 123":

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  var myquery = { address: "Valley 345" };
  var newvalues = { $set: {name: "Mickey", address: "Canyon 123" } };
  dbo.collection("customers").updateOne(myquery, newvalues, function(err, res) {
    if (err) throw err;
    console.log("1 document updated");
    db.close();
  });
});

Сохраните приведенный выше код в файле с именем «demo_update_one.js» и запустите файл:

Запустите «demo_update_one.js»

C:\Users\Your Name>node demo_update_one.js

Что даст вам этот результат:

1 document updated


Обновлять только определенные поля

При использовании $setоператора обновляются только указанные поля:

Пример

Обновите адрес с «Долина 345» на «Каньон 123»:

...
  var myquery = { address: "Valley 345" };
  var newvalues = { $set: { address: "Canyon 123" } };
  dbo.collection("customers").updateOne(myquery, newvalues, function(err, res) {
...

Обновление многих документов

Чтобы обновить все документы, соответствующие критериям запроса, используйте updateMany()метод.

Пример

Обновите все документы, где имя начинается на букву «С»:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("mydb");
  var myquery = { address: /^S/ };
  var newvalues = {$set: {name: "Minnie"} };
  dbo.collection("customers").updateMany(myquery, newvalues, function(err, res) {
    if (err) throw err;
    console.log(res.result.nModified + " document(s) updated");
    db.close();
  });
});

Сохраните приведенный выше код в файле с именем «demo_update_many.js» и запустите файл:

Запустите «demo_update_many.js»

C:\Users\Your Name>node demo_update_many.js

Что даст вам этот результат:

2 document(s) updated

Объект результата

Методы updateOne()и updateMany()возвращают объект, который содержит информацию о том, как выполнение повлияло на базу данных.

Большая часть информации не важна для понимания, но один объект внутри объекта называется «результатом», который сообщает нам, прошло ли выполнение нормально, и сколько документов было затронуто.

Объект результата выглядит следующим образом:

{ n: 1, nModified: 2, ok: 1 }

Вы можете использовать этот объект для возврата количества обновленных документов:

Пример

Вернуть количество обновленных документов:

console.log(res.result.nModified);

Что даст этот результат:

2