sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB-opdatering med tilstand

Starter Mongo 4.2 , db.collection.update() kan acceptere en aggregeringspipeline, som endelig tillader opdatering/oprettelse af et felt baseret på et andet felt:

// { 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 }
  • Den første del {} er matchforespørgslen, der filtrerer, hvilke dokumenter der skal opdateres (i vores tilfælde alle dokumenter).

  • Anden del [ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ] er opdaterings-aggregeringspipeline (bemærk de firkantede parenteser, der angiver brugen af ​​en aggregeringspipeline). $set er en ny aggregeringsoperator og et alias for $addFields . Så kan enhver aggregeringsoperator bruges i $set scene; i vores tilfælde en betinget lighedskontrol, som afhænger af den værdi, der skal bruges til den nye active felt.

  • Glem ikke { multi: true } , ellers vil kun det første matchende dokument blive opdateret.



  1. MongoDB $indexOfBytes

  2. Læsning af DBname.system.indexes mislykkedes på Atlas-klyngen af ​​mongobee efter oprettelse af forbindelse

  3. Hvordan sletter man dokumenter efter forespørgsel effektivt i mongo?

  4. Sådan skriver du fagforeningsforespørgsler i mongoDB