تحديث 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