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