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" ] } }]
_1db.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