Estou usando o mongodump das ferramentas do mongo para baixar um backup do meu servidor. No entanto, quando executo o comando, o comando retorna "Campo não reconhecido 'snapshot'".
O erro completo é:
Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.
Mongodump --version retorna:
mongodump version: built-without-version-string
git version: built-without-git-spec
Go version: go1.7.3
os: linux
arch: amd64
compiler: gc
OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
Talvez eu precise fazer o downgrade da minha versão? Caso contrário, não tenho certeza de para onde ir a partir daqui ...
Adicionar
--forceTableScan
Exemplo:
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html
O erro vem da funcionalidade de instantâneo do mongo que foi introduzida no mongo 4.0 ( https://docs.mongodb.com/manual/reference/read-concern-snapshot/ )
Se você usar um cliente mongo mais antigo (<4.0) para despejar/exportar um MongoDB mais recente, você receberá o erro
Usar "forceTableScan" impedirá que a funcionalidade de instantâneo se torne ativa, isso você não receberá o erro
Você certamente tem uma diferença de versão entre mongodump e seu servidor mongoDB (3.6 vs 4.0).
Você pode usar o docker para o resgate:
Com o docker, você pode usar uma versão precisa do tools cli sem instalá-lo.
Você pode até especificar um alias (em .bashrc):
Nota: A pasta onde o dump é salvo precisará ter permissões de gravação para que o usuário mongodb no contêiner possa gravar no volume montado. Isso pode ser feito definindo manualmente as permissões na pasta de despejo antes de executar o comando acima.
No exemplo acima seria:
mkdir -m 777 dump
. Após a conclusão do dump, as permissões podem ser modificadas de volta ao normal (ou seja,sudo chmod 755 dump
).Eu também estava enfrentando o mesmo problema no CentOS com as especificações abaixo, onde meu mongodb foi autenticado com nome de usuário e senha
Usei o comando abaixo:
E digitou a senha do mongodb quando solicitado.
Por padrão, o mongodump usa o índice _id quando a varredura de coleções com esse índice está disponível (por exemplo, as visualizações não têm nenhum índice). Especifique --forceTableScan para direcionar o mongodump para verificar os dados da coleção sem o uso do índice _id.
Para mais informações, basta consultar este link .
Se você despejar do Mongo Atlas, isso deve funcionar.