sql >> Database >  >> NoSQL >> MongoDB

MongoDB-update met voorwaarde

Vanaf Mongo 4.2 , db.collection.update() kan een aggregatiepijplijn accepteren, zodat eindelijk een veld kan worden bijgewerkt/gemaakt op basis van een ander veld:

// { 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 }
  • Het eerste deel {} is de match-query, die filtert welke documenten moeten worden bijgewerkt (in ons geval alle documenten).

  • Het tweede deel [ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ] is de update-aggregatiepijplijn (let op de vierkante haakjes die het gebruik van een aggregatiepijplijn aangeven). $set is een nieuwe aggregatie-operator en een alias van $addFields . Dan kan elke aggregatie-operator worden gebruikt binnen de $set fase; in ons geval een voorwaardelijke gelijkheidscontrole waarvan de waarde afhangt die moet worden gebruikt voor de nieuwe active veld.

  • Vergeet { multi: true } niet , anders wordt alleen het eerste overeenkomende document bijgewerkt.



  1. Mongoose maakt geen indexen

  2. Waarom wordt aanbevolen om nergens in de Node.js-code een MongoDB-verbinding te sluiten?

  3. Apache CouchDB installeren in Ubuntu 20.04

  4. elasticsearch vs. MongoDB voor filtertoepassing