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 MongoDB antes de fazer o backup. Não conheço nenhuma opção de depuração de dados do lado do servidor além de 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 tem 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?
(desculpe, não sei)
--query selecionará ou excluirá documentos inteiros, não campos.
Mas seria uma boa ideia:
Como resposta à sua primeira pergunta, ambas as ferramentas (por padrão) irão apenas percorrer o
_id
índice para buscar os dados e, em seguida, gravá-los no disco. Portanto, sim, ambas as ferramentas afetarão de maneira semelhante 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 repetir 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, presumo que você esteja procurando um
mongodump
equivalente à--fields
opção demongoexport
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 recomendaria executá-lo em um secundário para proteger seu conjunto de trabalho).Na verdade, o Mongoexport 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 no futuro.
"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/