MongoDB update


ULASHISH

Hujjatni yangilash

Yozuvni yoki hujjatni MongoDB da deyilganidek, foydalanish orqali yangilashingiz mumkin updateOne() usuli.

updateOne() usulining birinchi parametri qaysi hujjatni yangilash kerakligini belgilovchi so‘rov obyekti.

Eslatma: Agar so‘rovda bir nechta yozuv topilsa, faqat birinchisi hodisa yangilanadi.

Ikkinchi parametr hujjatning yangi qiymatlarini belgilovchi obyektdir.

Misol

Hujjatni "Valley 345" manzili bilan name="Mickey" ga yangilang va manzil = "Kanyon 123":

let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  let dbo = db.db("mydb");
  let myquery = { address: "Valley 345" };
  let 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();
  });
});
Misolni ishga tushirish »

Yuqoridagi kodni "demo_update_one.js" nomli faylga saqlang va faylni ishga tushiring:

"demo_update_one.js" ni ishga tushiring

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

Bu sizga bu natijani beradi:

1 document updated


Faqat ma’lum maydonlarni yangilang

$set operatoridan foydalanilganda, faqat belgilangan maydonlar yangilanadi:

Misol

Manzilni "Valley 345" dan "Canyon 123" ga yangilang:

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

Ko‘p hujjatlarni yangilang

So‘rov mezonlariga javob beradigan barcha hujjatlarni yangilash uchun foydalaning updateMany() usuli.

Misol

Nomi "S" harfi bilan boshlangan barcha hujjatlarni yangilang:

let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  let dbo = db.db("mydb");
  let myquery = { address: /^S/ };
  let 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();
  });
});
Misolni ishga tushirish »

Yuqoridagi kodni "demo_update_many.js" deb nomlangan faylga saqlang va faylni ishga tushiring:

"demo_update_many.js" ni ishga tushiring

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

Bu sizga bu natijani beradi:

2 document(s) updated

Natija obyekti

updateOne() va updateMany() usullari qandayligi haqida ma’lumotni o‘z ichiga olgan obyektni qaytaradi ijro ma’lumotlar bazasiga ta’sir qildi.

Ma’lumotlarning ko‘p qismini tushunish muhim emas, lekin uning ichida bitta obyekt obyekt "natija" deb nomlanadi, bu bizga ijroning yaxshi o‘tganligini va qandayligini aytadi ko‘plab hujjatlar ta’sir ko‘rsatdi.

Natija obyekti quyidagicha ko‘rinadi:

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

Yangilangan hujjatlar sonini qaytarish uchun ushbu obyektdan foydalanishingiz mumkin:

Misol

Yangilangan hujjatlar sonini qaytaring:

console.log(res.result.nModified);

Qaysi natijani beradi:

2


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!