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

Aktualizace MongoDB s podmínkou

Spouští se Mongo 4.2 , db.collection.update() může přijmout agregační kanál, což nakonec umožní aktualizaci/vytvoření pole založeného na jiném poli:

// { a: "Hello", b: "World" }
// { a: "Olleh", b: "Dlrow" }
db.collection.update(
  {},
  [ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ],
  { multi: true }
)
// { a: "Hello", b: "World", active: true  }
// { a: "Olleh", b: "Dlrow", active: false }
  • První část {} je vyhledávací dotaz, který filtruje, které dokumenty se mají aktualizovat (v našem případě všechny dokumenty).

  • Druhá část [ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ] je kanál agregace aktualizací (všimněte si hranatých závorek označujících použití kanálu agregace). $set je nový agregační operátor a alias $addFields . Potom lze v rámci $set použít libovolný agregační operátor etapa; v našem případě podmíněná kontrola rovnosti, na které závisí hodnota, která se má použít pro nový active pole.

  • Nezapomeňte { multi: true } , jinak bude aktualizován pouze první odpovídající dokument.



  1. pymongo:název 'ISODate' není definován

  2. Fronta Bull:Když úloha selže, jak zastavit frontu ve zpracování zbývajících úloh?

  3. Pole Mongodb $push a $pull

  4. Redis AOF fsync (VŽDY) vs. strom LSM