Operator pembaruan array di mongodb

Jika kueri cocok dengan larik menggunakan operator negasi, seperti , , atau , maka Anda tidak dapat menggunakan operator posisi untuk memperbarui nilai dari larik ini

Namun, jika bagian kueri yang dinegasikan berada di dalam ekspresi, Anda dapat menggunakan operator posisi untuk memperbarui bidang ini

Contoh

Perbarui Nilai dalam Array

Pertimbangkan koleksi siswa dengan dokumen berikut.

{ "_id" : 1, "grades" : [ 80, 85, 90 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }

Untuk memperbarui 80 menjadi 82 di grades array in the first document, use the positional $ operator if you do not know the position of the element in the array:

db.students.update(
   { _id: 1, grades: 80 },
   { $set: { "grades.$" : 82 } }
)
_

Ingat bahwa operator posisi $ bertindak sebagai placeholder untuk kecocokan pertama pembaruan.

Perbarui Dokumen dalam Array

Operator posisional $ memfasilitasi pembaruan ke larik yang berisi dokumen tersemat. Gunakan operator $ posisional untuk mengakses bidang dalam dokumen tersemat dengan di $ operator.

db.collection.update(
   { <query selector> },
   { <update operator>: { "array.$.field" : value } }
)

Perhatikan dokumen berikut dalam koleksi siswa yang nilainya element value is an array of embedded documents:

{
  _id: 4,
  grades: [
     { grade: 80, mean: 75, std: 8 },
     { grade: 85, mean: 90, std: 5 },
     { grade: 90, mean: 85, std: 3 }
  ]
}

Gunakan operator posisional $ untuk memperbarui nilai std field in the embedded document with the grade of 85:

db.students.update(
   { _id: 4, "grades.grade": 85 },
   { $set: { "grades.$.std" : 6 } }
)
_

Perbarui Dokumen Tersemat Menggunakan Beberapa Pencocokan Bidang

Operator $ dapat memperbarui elemen larik pertama yang cocok dengan beberapa kriteria kueri yang ditentukan oleh operator.

Perhatikan dokumen berikut dalam koleksi siswa yang nilainya field value is an array of embedded documents:

{
  _id: 4,
  grades: [
     { grade: 80, mean: 75, std: 8 },
     { grade: 85, mean: 90, std: 5 },
     { grade: 90, mean: 85, std: 3 }
  ]
}

Pada contoh di bawah, operator $ memperbarui nilai std field in the first embedded document that has grade field with a value less than or equal to 90 and a mean field with a value greater than 80:

db.students.update(
   {
     _id: 4,
     grades: { $elemMatch: { grade: { $lte: 90 }, mean: { $gt: 80 } } }
   },
   { $set: { "grades.$.std" : 6 } }
)
_

Operasi ini memperbarui dokumen tersemat pertama yang cocok dengan kriteria, yaitu dokumen tersemat kedua dalam larik

{
  _id: 4,
  grades: [
    { grade: 80, mean: 75, std: 8 },
    { grade: 85, mean: 90, std: 6 },
    { grade: 90, mean: 85, std: 3 }
  ]
}

参见

, ,

←   Operator Pembaruan Array $addToSet  →

© MongoDB, Inc 2008-2017. MongoDB, Mongo, dan logo daun adalah merek dagang terdaftar dari MongoDB, Inc

Bagaimana cara memperbarui elemen array di MongoDB?

Anda dapat menggunakan metode updateOne() atau updateMany() untuk menambahkan, memperbarui, atau menghapus elemen larik berdasarkan kriteria yang ditentukan. Direkomendasikan untuk menggunakan metode updateMany() untuk memperbarui banyak array dalam sebuah koleksi.

Operator mana yang digunakan untuk memperbarui dokumen di MongoDB?

MongoDB – Operator Pembaruan Bidang

Bagaimana cara memperbarui array bersarang di MongoDB?

Memperbarui susunan objek bersarang .
db. koleksi. .
Operator $set mengganti nilai bidang dengan nilai yang ditentukan
The filtered positional operator $[] identifies the array elements that match the arrayFilters conditions for an update operation..

Bagaimana cara memperbarui array di luwak?

Mongoose menyediakan beberapa operator untuk memperbarui larik seperti $addToSet, $push, $pop, dll . Pada artikel ini, kita akan membahas bagaimana menggunakan operator tersebut untuk melakukan operasi pembaruan pada array di nodejs. Kami akan menggunakan alat tukang pos untuk melakukan pengujian titik akhir. Anda dapat mengunduh alat tukang pos dari www. tukang pos. com.