Node.js MongoDB- opdatering


Dateer dokument op

U kan 'n rekord, of dokument soos dit in MongoDB genoem word, opdateer deur die updateOne()metode te gebruik.

Die eerste parameter van die updateOne()metode is 'n navraagobjek wat definieer watter dokument om by te werk.

Let wel: As die navraag meer as een rekord vind, word slegs die eerste voorkoms opgedateer.

Die tweede parameter is 'n objek wat die nuwe waardes van die dokument definieer.

Voorbeeld

Dateer die dokument op met die adres "Valley 345" na naam="Mickey" en adres="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();
  });
});

Stoor die kode hierbo in 'n lêer genaamd "demo_update_one.js" en hardloop die lêer:

Begin "demo_update_one.js"

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

Wat vir jou hierdie resultaat sal gee:

1 document updated


Dateer slegs spesifieke velde op

Wanneer die $setoperateur gebruik word, word slegs die gespesifiseerde velde opgedateer:

Voorbeeld

Dateer die adres op vanaf "Valley 345" na "Canyon 123":

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

Dateer baie dokumente op

Om alle dokumente op te dateer wat aan die kriteria van die navraag voldoen, gebruik die updateMany()metode.

Voorbeeld

Werk alle dokumente op waar die naam met die letter "S" begin:

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();
  });
});

Stoor die kode hierbo in 'n lêer genaamd "demo_update_many.js" en hardloop die lêer:

Begin "demo_update_many.js"

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

Wat vir jou hierdie resultaat sal gee:

2 document(s) updated

Die resultaatvoorwerp

Die updateOne()en die updateMany()metodes gee 'n objek terug wat inligting bevat oor hoe die uitvoering die databasis beïnvloed het.

Die meeste van die inligting is nie belangrik om te verstaan ​​nie, maar een voorwerp binne die voorwerp word "resultaat" genoem wat vir ons sê of die uitvoering OK gegaan het, en hoeveel dokumente geraak is.

Die resultaatvoorwerp lyk soos volg:

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

Jy kan hierdie voorwerp gebruik om die aantal opgedateerde dokumente terug te gee:

Voorbeeld

Gee die aantal bygewerkte dokumente terug:

console.log(res.result.nModified);

Wat hierdie resultaat sal lewer:

2