Para backup de produção, o MongoDB recomenda mongodump em vez de mongoexport para precisão dos dados. No entanto, eu precisaria "limpar" os dados de um banco de dados do MongoDB antes de fazer o backup. Não conheço outras opções de depuração de dados no servidor que não sejam mongoexport . Duas questões:
- O mongoexport acessa o cache do MongoDB na RAM? Isso alteraria o conjunto de trabalho na RAM como o mongodump faz?
- O comando mongodump possui esta opção --query . "Fornece um documento JSON como uma consulta que opcionalmente limita os documentos incluídos na saída do mongodump." É necessária uma consulta para excluir determinados campos em um documento?
mongodump
backup de captura instantânea normal ou do sistema de arquivos ou gravar uma exportação personalizada, semongoexport
não fizer o que você precisa. Qualquer ferramenta ou programa que leia dadosmongod
poderá alterar seu conjunto de trabalho se os dados a serem exportados forem maiores que a RAM disponível. Instantâneos de sistemas de arquivos são menos perturbadoresRespostas:
Como resposta à sua primeira pergunta, as duas ferramentas (por padrão) irão apenas percorrer o
_id
índice para buscar os dados e gravá-los no disco. Portanto, sim, ambas as ferramentas terão um impacto semelhante no seu conjunto de trabalho, e é por isso que geralmente recomendo executá-las em um secundário (de preferência um secundário oculto, se possível). Vou ecoar Stennie nos comentários aqui e recomendar outros métodos de backup se você estiver lidando com grandes quantidades de dados.Para a segunda pergunta, suponho que você esteja procurando um
mongodump
equivalente da--fields
opção demongoexport
para apenas despejar campos específicos. A opção de consulta pode ser usada para filtrar resultados, mas não pode ser usada com uma projeção (para selecionar os campos retornados) - esta é uma solicitação de recurso que está sendo rastreada no TOOLS-28, mas ainda não está agendada. Como Stennie também mencionou, a outra opção aqui é escrever um exportador personalizado que atenda às suas necessidades (e, novamente, eu ainda recomendo executá-lo em um secundário para proteger seu conjunto de trabalho).fonte
(desculpe, não sei)
--query selecionará ou excluirá documentos inteiros, não campos.
Seria uma boa ideia:
fonte
O Mongoexport realmente preserva os tipos, mas torna os dados inconsistentes. Se você estiver exportando um campo com Ints e Longs, ele será exportado como objetos Numbers e JSON, respectivamente, o que pode dificultar o processo.
"Modo estrito. As representações de modo estrito dos tipos BSON estão em conformidade com o JSON RFC. Qualquer analisador JSON pode analisar essas representações de modo estrito como pares de chave / valor; no entanto, apenas o analisador JSON interno do MongoDB reconhece as informações de tipo transmitidas pelo formato."
https://docs.mongodb.com/manual/reference/mongodb-extended-json/
fonte