Artikel ini akan membahas tentang operasi db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) _4 dan db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 5. Selain itu, masalah penambahan bidang dalam koleksi di MongoDB juga dijelaskan secara singkat menggunakan kedua operator ini
Operator db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4 di MongoDB
Operator db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4 mengubah nilai bidang menjadi nilai yang diberikan. Ekspresi operator db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4 terlihat seperti ini. db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) _9
Gunakan notasi titik untuk menentukan { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 0 dalam teks tersemat atau larik
Perilaku Operator db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4
Operator pembaruan menangani bidang dokumen dengan nama berbasis string dalam urutan leksikografis mulai dari MongoDB 5. 0. Bidang dengan nama numerik ditangani dalam urutan numerik
Jika bidang belum ada, db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4 akan membuatnya dengan nilai yang diminta, selama bidang baru tidak melanggar batasan jenis. Jika Anda memberikan jalur bertitik untuk bidang yang tidak ada, db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4 akan membuat dokumen yang disematkan sesuai kebutuhan untuk melengkapi jalur bertitik
db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4 akan memperbarui atau membuat setiap bidang jika Anda menyediakan beberapa pasangan nilai bidang
Saat Anda menggunakan operator pembaruan seperti db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) _4 dengan ekspresi operan kosong ({ _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 6) di MongoDB 5. 0, { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } _7 tidak lagi menampilkan kesalahan. Tidak ada modifikasi karena pembaruan kosong, dan tidak ada catatan { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 8 yang dihasilkan (artinya operasi adalah tanpa operasi)
Misalnya, mari kita buat koleksi { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 9
db.clothes.insertOne( { _id: 100, quantity: 250, instock: true, reorder: false, details: { model: "14RR", make: "Clothes" }, tags: [ "apparel", "clothing" ], ratings: [ { by: "Customer127", rating: 5 } ] } )
Tetapkan Bidang Tingkat Atas
Prosedur berikut menggunakan operator db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4 untuk mengubah nilai bidang db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 1, db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 2, dan db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 3 untuk dokumen yang memenuhi kriteria db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 4 sama dengan db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 5
db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } )
Operasi memperbarui berikut ini
- nilai db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) _1 hingga db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 7
- db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) _2 dengan dokumen tersemat yang baru
- db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) _3 bidang dengan larik baru
Dokumen sekarang memiliki nilai berikut
{ _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } _
Tetapkan Bidang dalam Dokumen Tertanam
Gunakan notasi titik untuk menunjukkan { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 0 dalam teks tersemat atau larik. Tindakan berikut mengubah bidang db.clothes.updateOne( { _id: 100 }, { $set: { "tags.1": "rain wear", "ratings.0.rating": 3 } } ) 1 dalam dokumen db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 2 untuk dokumen yang memenuhi kriteria db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 4 sama dengan db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 5
db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } )
Setelah pembaruan, dokumen sekarang memiliki nilai berikut
Atur Elemen dalam Array
Gunakan notasi titik untuk menunjukkan { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 0 dalam teks tersemat atau larik
Tindakan berikut mengubah nilai elemen kedua di bidang db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 3 dan bidang db.clothes.updateOne( { _id: 100 }, { $set: { "tags.1": "rain wear", "ratings.0.rating": 3 } } ) 7 di elemen pertama larik db.clothes.updateOne( { _id: 100 }, { $set: { "tags.1": "rain wear", "ratings.0.rating": 3 } } ) 7 untuk dokumen yang memenuhi kriteria db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 4 sama dengan db.clothes.updateOne( { _id: 100 }, { $set: { "details.make": "Kidz" } } ) 5
db.clothes.updateOne( { _id: 100 }, { $set: { "tags.1": "rain wear", "ratings.0.rating": 3 } } )
Setelah pembaruan, dokumen sekarang memiliki nilai berikut
Operator db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 5 di MongoDB
Jika dokumen dimasukkan karena operasi pembaruan dengan db.clothes.updateOne( { _id: 1 }, { $set: { item: "banana" }, $setOnInsert: { defaultQty: 100 } }, { upsert: true } ) 2, maka db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 5 menerapkan nilai yang diberikan ke bidang dalam dokumen. db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 5 tidak melakukan apa pun jika tindakan pembaruan tidak menghasilkan penyisipan
Opsi db.clothes.updateOne( { _id: 1 }, { $set: { item: "banana" }, $setOnInsert: { defaultQty: 100 } }, { upsert: true } ) _5 dapat ditentukan
Perilaku Operator db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 5
Operator pembaruan menangani bidang dokumen dengan nama berbasis string dalam urutan leksikografis mulai dari MongoDB 5. 0. Bidang dengan nama numerik ditangani dalam urutan numerik
Saat Anda menggunakan operator pembaruan seperti db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) _5 dengan ekspresi operan kosong ({ _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 6) di MongoDB 5. 0, { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } _7 tidak lagi menampilkan kesalahan. Tidak ada modifikasi karena pembaruan kosong, dan tidak ada catatan { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 8 yang dihasilkan (artinya operasi adalah tanpa pengoperasian)
Misalnya, koleksi { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } _9 tidak berisi dokumen. Kami akan memasukkan dokumen baru menggunakan { "_id" : 1, "item" : "banana", "defaultQty" : 100 } 2 dengan parameter db.clothes.updateOne( { _id: 1 }, { $set: { item: "banana" }, $setOnInsert: { defaultQty: 100 } }, { upsert: true } ) 2
db.clothes.updateOne( { _id: 1 }, { $set: { item: "banana" }, $setOnInsert: { defaultQty: 100 } }, { upsert: true } )
{ _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 0 digunakan oleh MongoDB untuk membuat dokumen baru dengan pengenal { "_id" : 1, "item" : "banana", "defaultQty" : 100 } 5. db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 5 membuat perubahan yang diminta pada dokumen
Dokumen yang baru dimasukkan ditemukan dalam koleksi { _id: 100, quantity: 400, instock: true, reorder: false, details: { model: '2600', make: 'Fashionables' }, tags: [ 'coats', 'outerwear', 'clothing' ], ratings: [ { by: 'Customer127', rating: 5 } ] } 9
{ "_id" : 1, "item" : "banana", "defaultQty" : 100 }
Ketika parameter db.clothes.updateOne( { _id: 1 }, { $set: { item: "banana" }, $setOnInsert: { defaultQty: 100 } }, { upsert: true } ) 5 adalah { "_id" : 1, "item" : "banana", "defaultQty" : 100 } 9, metode { "_id" : 1, "item" : "banana", "defaultQty" : 100 } 2
- Membuat dokumen baru,
- Menerapkan operasi db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) _4,
- Menerapkan operasi db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) _5
Jika { "_id" : 1, "item" : "banana", "defaultQty" : 100 } _2 cocok dengan dokumen yang ada, MongoDB hanya menerapkan operasi db.clothes.updateOne( { _id: 100 }, { $set: { quantity: 400, details: { model: "2600", make: "Fashionables" }, tags: [ "coats", "outerwear", "clothing" ] } } ) 4
Tambahkan Bidang Baru ke Dokumen dalam Koleksi MongoDB
Anda dapat menggunakan metode berikut untuk menambahkan bidang baru ke setiap dokumen dalam kumpulan di MongoDB
Contoh juga ditampilkan untuk menggunakan setiap metode dengan kumpulan tim dengan dokumen berikut
db.teams.insertOne({team: "United", position: "Defence", points: 31}) db.teams.insertOne({team: "Spurs", position: "Defence", points: 22}) db.teams.insertOne({team: "Palace", position: "Center", points: 19}) db.teams.insertOne({team: "Eagles", position: "Forward", points: 26}) db.teams.insertOne({team: "Lions", position: "Defence", points: 33})
Tambahkan Bidang Baru Tanpa Nilai
Sintaksis
db.collection.updateMany({}, {$set:{"new_field": null}})
Anda dapat menggunakan kode berikut untuk menambahkan bidang yang disebut db.teams.insertOne({team: "United", position: "Defence", points: 31}) db.teams.insertOne({team: "Spurs", position: "Defence", points: 22}) db.teams.insertOne({team: "Palace", position: "Center", points: 19}) db.teams.insertOne({team: "Eagles", position: "Forward", points: 26}) db.teams.insertOne({team: "Lions", position: "Defence", points: 33}) 9, yang nilainya merupakan gabungan dari bidang yang ada db.collection.updateMany({}, {$set:{"new_field": null}}) 0 dan db.collection.updateMany({}, {$set:{"new_field": null}}) 1