sql >> Databáze >  >> NoSQL >> MongoDB

Jak přepnout prvek v poli v mongoDB

Pokud dokument aktualizujete, můžete použít kanál v rámci aktualizace . Tato funkce je však dostupná s MongoDB verze 4.2 nebo novější.

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

POZNÁMKA: Za předpokladu proměnné element je řetězec hodnotu.

Pokud se právě dotazujete, můžete použít následující agregaci:

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

Pokud však používáte verzi MongoDB starší než 4.2, můžete k aktualizaci dokumentu použít souhrnný výstup shora:

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


  1. Grails - Připojte se k databázi MongoDB pomocí ověřování

  2. mongodb agregovat $lookup vs najít a naplnit

  3. Lepší vzor pro filtrování sbírek

  4. Připojte se k MongoDB Atlas Cluster db pomocí reaktivní aplikace