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

Cara mengaktifkan elemen dalam array di mongoDB

Jika Anda memperbarui dokumen, Anda dapat menggunakan saluran dalam pembaruan . Tetapi fitur ini tersedia dengan MongoDB versi 4.2 atau yang lebih baru.

db.collection.update(
  { },
  [
     { 
          $set: { 
              arr: { 
                  $cond: [ { $in: [ element, "$arr" ] }, 
                           { $setDifference: [ "$arr", [ element ] ] }, 
                           { $concatArrays: [ "$arr", [ element ] ] } 
                  ] 
              }
          }
     }
  ]
)

CATATAN: Dengan asumsi variabel element adalah string nilai.

Jika Anda hanya menanyakan, Anda dapat menggunakan agregasi berikut:

db.collection.aggregate([
     { 
          $addFields: { 
              arr: { 
                  $cond: [ { $in: [ element, "$arr" ] }, 
                           { $setDifference: [ "$arr", [ element ] ] }, 
                           { $concatArrays: [ "$arr", [ element ] ] } 
                  ] 
              }
          }
     }
] )

Namun, jika Anda menggunakan MongoDB versi lebih awal dari 4.2, maka Anda dapat menggunakan output agregat dari atas untuk memperbarui dokumen:

db.collection.aggregate( [
  // aggregation pipeine from above ...
] ).forEach( doc => db.collection.updateOne( { _id: doc._id }, { $set: { arr: doc.arr } } ) )


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ubah struktur dokumen di mongodb dengan shell mongo

  2. Meminta MongoDB dengan Antarmuka JSON / HTTP / REST

  3. Bagaimana cara mengembalikan jumlah objek yang diperbarui di mongodb?

  4. MongoDB v2.4.9 urutkan berdasarkan bidang boolean

  5. perbarui mongodb jika bidang tidak ada