sql >> Base de Datos >  >> NoSQL >> MongoDB

Actualización de MongoDB con condición

Iniciando Mongo 4.2 , db.collection.update() puede aceptar una tubería de agregación, permitiendo finalmente la actualización/creación de un campo basado en otro campo:

// { 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 }
  • La primera parte {} es la consulta de coincidencia, filtrando qué documentos actualizar (en nuestro caso, todos los documentos).

  • La segunda parte [ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ] es la canalización de agregación de actualizaciones (tenga en cuenta los corchetes que indican el uso de una canalización de agregación). $set es un nuevo operador de agregación y un alias de $addFields . Entonces cualquier operador de agregación puede usarse dentro del $set escenario; en nuestro caso, una comprobación de igualdad condicional de la que depende el valor a utilizar para el nuevo active campo.

  • No olvides { multi: true } , de lo contrario, solo se actualizará el primer documento coincidente.