تحديث Node.js MongoDB
تحديث المستند
يمكنك تحديث سجل أو مستند كما يطلق عليه في MongoDB باستخدام updateOne()
الطريقة.
المعلمة الأولى updateOne()
للطريقة هي كائن استعلام يحدد المستند المراد تحديثه.
ملاحظة: إذا عثر الاستعلام على أكثر من سجل واحد ، فسيتم تحديث التكرار الأول فقط.
المعلمة الثانية هي كائن يحدد القيم الجديدة للمستند.
مثال
قم بتحديث المستند بالعنوان "Valley 345" إلى الاسم = "Mickey" والعنوان = "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