Actualización de Node.js MongoDB
Actualizar documento
Puede actualizar un registro, o documento como se llama en MongoDB, utilizando el updateOne()
método.
El primer parámetro del updateOne()
método es un objeto de consulta que define qué documento actualizar.
Nota: Si la consulta encuentra más de un registro, solo se actualiza la primera aparición.
El segundo parámetro es un objeto que define los nuevos valores del documento.
Ejemplo
Actualice el documento con la dirección "Valley 345" a name="Mickey" y 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();
});
});
Guarde el código anterior en un archivo llamado "demo_update_one.js" y ejecute el archivo:
Ejecute "demo_update_one.js"
C:\Users\Your Name>node demo_update_one.js
Lo que te dará este resultado:
1 document updated
Actualizar solo campos específicos
Al usar el $set
operador, solo se actualizan los campos especificados:
Ejemplo
Actualice la dirección de "Valley 345" a "Canyon 123":
...
var myquery = { address: "Valley 345" };
var newvalues
= { $set: { address: "Canyon 123" } };
dbo.collection("customers").updateOne(myquery,
newvalues, function(err, res) {
...
Actualizar muchos documentos
Para actualizar todos los documentos que cumplan con los criterios de la consulta, utilice el updateMany()
método.
Ejemplo
Actualice todos los documentos donde el nombre comience con la letra "S":
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();
});
});
Guarde el código anterior en un archivo llamado "demo_update_many.js" y ejecute el archivo:
Ejecute "demo_update_many.js"
C:\Users\Your Name>node demo_update_many.js
Lo que te dará este resultado:
2 document(s) updated
El objeto de resultado
Los métodos updateOne()
y
updateMany()
devuelven un objeto que contiene información sobre cómo la ejecución afectó a la base de datos.
No es importante comprender la mayor parte de la información, pero un objeto dentro del objeto se llama "resultado", que nos dice si la ejecución fue correcta y cuántos documentos se vieron afectados.
El objeto de resultado se ve así:
{ n: 1, nModified: 2, ok: 1 }
Puede utilizar este objeto para devolver el número de documentos actualizados:
Ejemplo
Devuelve el número de documentos actualizados:
console.log(res.result.nModified);
Lo que producirá este resultado:
2