Eu tenho um colecionado nomeado foo
hipoteticamente.
Cada instância de foo
possui um campo chamado lastLookedAt, que é um registro de data e hora do UNIX desde a época. Eu gostaria de poder percorrer o cliente MongoDB e definir esse carimbo de data / hora para todos os documentos existentes (cerca de 20.000 deles) como o carimbo de data / hora atual.
Qual é a melhor maneira de lidar com isso?
Respostas:
Independentemente da versão, por exemplo, o
<update>
é:No entanto, dependendo da sua versão do MongoDB, a consulta terá uma aparência diferente. Independentemente da versão, a chave é que a condição vazia
{}
corresponderá a qualquer documento . No shell do Mongo ou com qualquer cliente do MongoDB:$ version> = 3.2 :
{}
é a condição (a condição vazia corresponde a qualquer documento)3.2> $ version> = 2.2 :
{}
é a condição (a condição vazia corresponde a qualquer documento){multi: true}
é a opção "atualizar vários documentos"$ versão <2.2 :
{}
é a condição (a condição vazia corresponde a qualquer documento)false
é para o parâmetro " upsert "true
é para o parâmetro "multi" (atualizar vários registros)fonte
Este código será útil para você
fonte
Estou usando o driver MongoDB .NET há um pouco mais de um mês. Se eu fizesse isso usando o driver .NET, usaria o método Update no objeto de coleção. Primeiro, construirei uma consulta que fornecerá todos os documentos que me interessam e atualizarei os campos que desejo alterar. A atualização no Mongo afeta apenas o primeiro documento e para atualizar todos os documentos resultantes da consulta, é necessário usar o sinalizador de atualização 'Multi'. O código de exemplo segue ...
fonte