Atualização: Se tudo o que você precisa fazer é alterar a estrutura de um documento sem alterar os valores, veja a resposta do gipset para uma boa solução.
De acordo com um comentário (agora indisponível) na página de documentação de atualização, você não pode fazer referência às propriedades do documento atual de dentro de um
update()
. Você terá que percorrer todos os documentos e atualizá-los assim:
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);
}
)
Essa função também pode ser usada em um trabalho de redução de mapa ou em um
db.eval()
do lado do servidor trabalho, de acordo com suas necessidades.