Cara mengubah nilai kunci di mongodb

Mari kita buat koleksi dengan dokumen −

> db.demo196.insertOne(
..   {
...
..      "Id" : "101",
..      "details" : [
..         {
..            "FirstName" : "Chris",
..            "LastName" : "Brown",
..            "Score" : 45
..         },
..         {
..            "FirstName" : "David",
..            "LastName" : "Miller",
..            "Score" : 87
..         },
..         {
..            "FirstName" : "John",
..            "LastName" : "Doe",
..            "Score" : 56
..         }
..      ]
..   }
...);
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3af6b103d395bdc21346d7")
}

Tampilkan semua dokumen dari koleksi dengan bantuan metode find() −

>  db.demo196.find();
_

Ini akan menghasilkan output berikut -

{
   "_id" : ObjectId("5e3af6b103d395bdc21346d7"), "Id" : "101", "details" : [
      { "FirstName" : "Chris", "LastName" : "Brown", "Score" : 45 },
      { "FirstName" : "David", "LastName" : "Miller", "Score" : 87 },
      { "FirstName" : "John", "LastName" : "Doe", "Score" : 56 }
   ]
}

Berikut adalah kueri untuk memperbarui nilai kunci di mana kunci yang berbeda sama dengan beberapa nilai −

> db.demo196.update({"details":{"$elemMatch":{"FirstName" : "David", "LastName" : "Miller"}}},
..                      {"$set":{"details.$.Score":98}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Tampilkan semua dokumen dari koleksi dengan bantuan metode find() −

> db.demo196.find();
_

Ini akan menghasilkan output berikut -

{
   "_id" : ObjectId("5e3af6b103d395bdc21346d7"), "Id" : "101", "details" : [
      { "FirstName" : "Chris", "LastName" : "Brown", "Score" : 45 },
      { "FirstName" : "David", "LastName" : "Miller", "Score" : 98 },
      { "FirstName" : "John", "LastName" : "Doe", "Score" : 56 }
   ]
}

Saya ingin mengubah nama bidang (hanya nama bidang tetapi bukan nilainya) dalam dokumen di MongoDB. Dokumen terlihat seperti ini (di bawah) dan hanya ada satu dokumen dalam kumpulan pengguna = Soham

{_id : ObjectId(xxxxxxxxxxxx),
 user : "Soham",
 age  : 29
}
_

Sekarang saya ingin mengubah bidang bernama 'pengguna' menjadi 'nama', tetapi bukan nilai bidangnya. Jadi di shell mongo saya menulis perintah di bawah ini

var soh = db.user.find({"user":"Soham"});
soh.name = soh.user;
delete soh.user;
db.user.update({"user":"Roshan"},soh);

Ketika saya menjalankan perintah pembaruan, itu memberi saya kesalahan. Tidak yakin di mana kesalahan saya karena saya baru mengenal MongoDB. Segala jenis bantuan dihargai

Halo,

Terima kasih atas tanggapan cepat, saya menggunakan kueri yang disebutkan di bawah ini. db. Sejarah Inventaris. memperbarui(
{"sejarah. status. tanggalstatus”. {$type. "rangkaian"}},
[{$set. {"sejarah. status". {$peta. {
memasukkan. "$sejarah. status",
di dalam. {$cond. {
jika. {$eq. ["string",{$type. "$$ ini. statusTanggal"}]},
Kemudian. {$mergeObjects. ["$$ini", {statusDate. {$toDate. "$$ ini. statusTanggal"}}]},
kalau tidak. "$$ ini"
}}
}}}}])

Tetapi setelah pembaruan, status berubah dari objek menjadi larik. Harap temukan dokumen yang disebutkan di bawah yang diperbarui, setelah memperbarui koleksi
{
"_pengenal". {
“$id”. “636236bd2cc35012f45932de”
},

“hexTagId”. “918907048020000003E9”,
“tagSerialNo”. “137438954473”,
"sejarah". [
{
"status". [
{
“statusId”. 1,
"status". “PERSEDIAAN BARU”,
“statusTanggal”. {
“$tanggal”. {
“$angkaPanjang”. “1444745265000”
}
}
}
]
}
]
}

Di sini saya tidak ingin mengkonversi dari objek ke array. Tolong beri tahu saya masukan Anda

Mulai di MongoDB 5. 0, perbarui bidang dokumen proses operator dengan nama berbasis string dalam urutan leksikografis. Bidang dengan nama numerik diproses dalam urutan numerik. Lihat detailnya

Jika field tersebut tidak ada, akan menambahkan field baru dengan nilai yang telah ditentukan, asalkan field baru tersebut tidak melanggar batasan tipe. Jika Anda menentukan jalur bertitik untuk bidang yang tidak ada, akan membuat dokumen tersemat yang diperlukan untuk memenuhi jalur bertitik ke bidang

Jika Anda menentukan beberapa pasangan bidang-nilai, akan memperbarui atau membuat setiap bidang

Mulai di MongoDB 5. 0, tidak lagi menimbulkan kesalahan saat Anda menggunakan operator pembaruan seperti dengan ekspresi operan kosong (

db.products.updateOne(   { _id: 100 },   { $set:      {        quantity: 500,        details: { model: "2600", make: "Fashionaires" },        tags: [ "coats", "outerwear", "clothing" ]      }   })
0 ). Pembaruan kosong tidak menghasilkan perubahan dan tidak ada entri yang dibuat (artinya operasinya adalah tanpa operasi)

Contoh

Buat koleksi

db.products.updateOne(   { _id: 100 },   { $set:      {        quantity: 500,        details: { model: "2600", make: "Fashionaires" },        tags: [ "coats", "outerwear", "clothing" ]      }   })
_1

db.products.insertOne(   {     _id: 100,     quantity: 250,     instock: true,     reorder: false,     details: { model: "14QQ", make: "Clothes Corp" },     tags: [ "apparel", "clothing" ],     ratings: [ { by: "Customer007", rating: 4 } ]   })

Tetapkan Bidang Tingkat Atas

Untuk dokumen yang cocok dengan kriteria

db.products.updateOne(   { _id: 100 },   { $set:      {        quantity: 500,        details: { model: "2600", make: "Fashionaires" },        tags: [ "coats", "outerwear", "clothing" ]      }   })
2 sama dengan
db.products.updateOne(   { _id: 100 },   { $set:      {        quantity: 500,        details: { model: "2600", make: "Fashionaires" },        tags: [ "coats", "outerwear", "clothing" ]      }   })
3, operasi berikut memperbarui nilai elemen kedua (indeks larik
db.products.updateOne(   { _id: 100 },   { $set: { "details.make": "Kustom Kidz" } })
0) di bidang
db.products.updateOne(   { _id: 100 },   { $set:      {        quantity: 500,        details: { model: "2600", make: "Fashionaires" },        tags: [ "coats", "outerwear", "clothing" ]      }   })
7 dan bidang
db.products.updateOne(   { _id: 100 },   { $set: { "details.make": "Kustom Kidz" } })
2 di elemen pertama (indeks larik
db.products.updateOne(   { _id: 100 },   { $set: { "details.make": "Kustom Kidz" } })
3) dari larik
db.products.updateOne(   { _id: 100 },   { $set: { "details.make": "Kustom Kidz" } })
_4

Bagaimana cara memperbarui nilai kunci di MongoDB?

Dokumen MongoDB Update() dengan Contoh .
Langkah 1) Keluarkan perintah pembaruan
Langkah 2) Pilih kondisi yang ingin Anda gunakan untuk memutuskan dokumen mana yang perlu diperbarui. .
Langkah 3) Gunakan perintah set untuk mengubah Nama Bidang
Langkah 4) Pilih Nama Bidang mana yang ingin Anda ubah dan masukkan nilai baru yang sesuai
Keluaran

Bagaimana cara mengubah nilai bidang di MongoDB?

Kita dapat menggunakan operator $set dan $inc untuk memperbarui bidang apa pun di MongoDB. Operator $set akan menetapkan nilai yang baru ditentukan sedangkan operator $inc akan meningkatkan nilai dengan nilai yang ditentukan.

Bagaimana cara mengganti nama kunci di MongoDB?

Operator $rename memperbarui nama bidang dan memiliki formulir berikut. {$ganti nama. { Nama field baru harus berbeda dengan nama field yang sudah ada. Untuk menentukan

Bisakah kita mengubah kunci beling di MongoDB?

Untuk mengatasi masalah ini, MongoDB memungkinkan Anda mengubah kunci beling . Mulai di MongoDB 5. 0, Anda dapat membuat ulang koleksi dengan mengubah kunci pecahan koleksi. Mulai di MongoDB 4. 4, Anda dapat menyempurnakan kunci beling dengan menambahkan bidang akhiran atau bidang ke kunci beling yang ada.