MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

3 Cara Menghapus Nilai dari Array di MongoDB

MongoDB menyediakan beberapa operator yang memungkinkan Anda menghapus nilai dari array.

Ini termasuk:

  • $pull
  • $pullAll
  • $pop

$pull Operator

$pull operator menghapus dari larik yang ada semua contoh nilai atau nilai yang cocok dengan kondisi yang ditentukan.

Misalkan kita memiliki koleksi yang disebut products dengan dokumen sebagai berikut:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Kita dapat menghapus elemen dari array di dokumen 1 seperti ini:

db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)

Sekarang ketika kita memeriksa koleksinya, kita dapat melihat bahwa XXL telah dihapus dari dokumen 1 sebagaimana ditentukan:

db.products.find()

Hasil:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

$pullAll Operator

$pullAll operator menghapus semua instance dari nilai yang ditentukan dari array.

Misalkan kita memiliki koleksi dengan dokumen-dokumen berikut:

{ "_id" : 1, "bar" : [ 1, 7, 2, 3, 8, 7, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }

Dan kami ingin menghapus semua nilai 7 dari larik di dokumen 1.

Kita bisa melakukan ini:

db.foo.update( 
  { _id: 1 }, 
  { $pullAll: { bar: [ 7 ] } } 
)

Ini menghapus kedua kemunculan 7 dari larik di dokumen 1.

Kami dapat memverifikasi ini dengan memeriksa koleksi:

db.foo.find()

Hasil:

{ "_id" : 1, "bar" : [ 1, 2, 3, 8, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }

Kita dapat melihat bahwa larik di dokumen 1 memiliki semua 7 nilai dihapus seperti yang ditentukan.

Sementara $pullAll mirip dengan $pull , perbedaannya adalah $pullAll menghapus elemen yang cocok dengan nilai yang tercantum. Ini tidak seperti $pull , tempat Anda menghapus nilai dengan menentukan kueri.

$pop Operator

$pop operator menghapus elemen pertama atau terakhir dari array.

Berikan nilai -1 untuk menghapus elemen pertama, dan 1 untuk menghapus yang terakhir.

Misalkan kita memiliki koleksi yang disebut products dengan dokumen sebagai berikut:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

Kode berikut menghapus elemen terakhir dari array di dokumen 1:

db.products.update( 
  { _id: 2 }, 
  { $pop: { sizes: 1 } } 
)

Kami dapat memverifikasi ini dengan memeriksa koleksi:

db.products.find()

Hasil:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. TypeError:ObjectId('') tidak JSON serializable

  2. mongodb memindahkan dokumen dari satu koleksi ke koleksi lain

  3. MongoDB mengonversi tanggal menjadi string

  4. Metode 'statis' luwak vs. metode 'contoh'

  5. Koneksi ditolak ke MongoDB errno 111