MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:Atualizando documentos usando dados do mesmo documento


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.