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

MongoDB:Actualización de documentos usando datos del mismo documento

Actualización: Si todo lo que tiene que hacer es cambiar la estructura de un documento sin cambiar los valores, vea la respuesta de gipset para una buena solución.

De acuerdo con un comentario (ahora no disponible) en la página de documentación de Actualización, no puede hacer referencia a las propiedades del documento actual desde dentro de un update() .

Tendrás que recorrer todos los documentos y actualizarlos así:

db.events.find().snapshot().forEach(
  function (e) {
    // update document, using its own properties
    e.coords = { lat: e.lat, lon: e.lon };

    // remove old properties
    delete e.lat;
    delete e.lon;

    // save the updated document
    db.events.save(e);
  }
)

Dicha función también se puede usar en un trabajo de reducción de mapas o en un db.eval() del lado del servidor trabajo, dependiendo de sus necesidades.