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