Node.js MongoDBอัปเดต


อัพเดทเอกสาร

คุณสามารถอัปเดตระเบียนหรือเอกสารตามที่เรียกใน MongoDB ได้โดยใช้updateOne()วิธีการ

พารามิเตอร์แรกของupdateOne()เมธอดคืออ็อบเจ็กต์การสืบค้นที่กำหนดว่าเอกสารใดที่จะอัปเดต

หมายเหตุ:ถ้าแบบสอบถามพบมากกว่าหนึ่งระเบียน เฉพาะรายการแรกเท่านั้นที่จะได้รับการอัปเดต

พารามิเตอร์ที่สองคืออ็อบเจ็กต์ที่กำหนดค่าใหม่ของเอกสาร

ตัวอย่าง

อัปเดตเอกสารด้วยที่อยู่ "Valley 345" เป็น name="Mickey" and 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โอเปอเรเตอร์ จะมีการอัปเดตเฉพาะฟิลด์ที่ระบุ:

ตัวอย่าง

อัปเดตที่อยู่จาก "Valley 345" เป็น "Canyon 123":

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

อัพเดทเอกสารมากมาย

หากต้องการอัปเดต เอกสาร ทั้งหมดที่ตรงตามเกณฑ์ของแบบสอบถาม ให้ใช้updateMany()วิธีการ

ตัวอย่าง

อัปเดตเอกสารทั้งหมดที่ชื่อขึ้นต้นด้วยตัวอักษร "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();
  });
});

บันทึกรหัสด้านบนในไฟล์ชื่อ "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