Pembaruan MongoDB Node.js


Perbarui Dokumen

Anda dapat memperbarui catatan, atau dokumen seperti yang disebut di MongoDB, dengan menggunakan updateOne()metode.

Parameter pertama dari updateOne()metode ini adalah objek kueri yang menentukan dokumen mana yang akan diperbarui.

Catatan: Jika kueri menemukan lebih dari satu rekaman, hanya kemunculan pertama yang diperbarui.

Parameter kedua adalah objek yang mendefinisikan nilai baru dari dokumen.

Contoh

Perbarui dokumen dengan alamat "Valley 345" menjadi name="Mickey" dan 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();
  });
});

Simpan kode di atas dalam file bernama "demo_update_one.js" dan jalankan file tersebut:

Jalankan "demo_update_one.js"

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

Yang akan memberi Anda hasil ini:

1 document updated


Perbarui Hanya Bidang Tertentu

Saat menggunakan $setoperator, hanya bidang tertentu yang diperbarui:

Contoh

Perbarui alamat dari "Valley 345" menjadi "Canyon 123":

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

Perbarui Banyak Dokumen

Untuk memperbarui semua dokumen yang memenuhi kriteria kueri, gunakan updateMany()metode.

Contoh

Perbarui semua dokumen yang namanya dimulai dengan huruf "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();
  });
});

Simpan kode di atas dalam file bernama "demo_update_many.js" dan jalankan file tersebut:

Jalankan "demo_update_many.js"

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

Yang akan memberi Anda hasil ini:

2 document(s) updated

Hasil Obyek

Dan updateOne()metode updateMany()mengembalikan objek yang berisi informasi tentang bagaimana eksekusi mempengaruhi database.

Sebagian besar informasi tidak penting untuk dipahami, tetapi satu objek di dalam objek disebut "hasil" yang memberi tahu kita jika eksekusi berjalan dengan baik, dan berapa banyak dokumen yang terpengaruh.

Objek hasil terlihat seperti ini:

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

Anda dapat menggunakan objek ini untuk mengembalikan jumlah dokumen yang diperbarui:

Contoh

Kembalikan jumlah dokumen yang diperbarui:

console.log(res.result.nModified);

Yang akan menghasilkan hasil ini:

2