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.