@ karoly-horvath está certo. Os campos são obrigatórios para csv.
De acordo com esse bug no rastreador de problemas do MongoDB https://jira.mongodb.org/browse/SERVER-4224, você DEVE fornecer os campos ao exportar para um csv . Os documentos não são claros sobre isso. Essa é a razão do erro.
Experimente isto:
mongoexport --host localhost --db dbname --collection name --csv --out text.csv --fields firstName,middleName,lastName
ATUALIZAR:
Este commit: https://github.com/mongodb/mongo-tools/commit/586c00ef09c32c77907bd20d722049ed23065398 corrige os documentos para 3.0.0-rc10 e posterior. Isso muda
Fields string `long:"fields" short:"f" description:"comma separated list of field names, e.g. -f name,age"`
para
Fields string `long:"fields" short:"f" description:"comma separated list of field names (required for exporting CSV) e.g. -f \"name,age\" "`
VERSÃO 3.0 E ACIMA:
Você deve usar em --type=csv
vez de, --csv
uma vez que se tornou obsoleto.
Mais detalhes: https://docs.mongodb.com/manual/reference/program/mongoexport/#export-in-csv-format
Comando completo:
mongoexport --host localhost --db dbname --collection name --type=csv --out text.csv --fields firstName,middleName,lastName
mongoexport
dizcsv flag is deprecated; please use --type=csv instead
Além disso, não são permitidos espaços entre nomes de campo separados por vírgula.
RUIM:
-f firstname, lastname
BOA:
-f firstname,lastname
fonte
Você tem que especificá-lo manualmente e se você pensar sobre isso, faz todo o sentido. O MongoDB não tem esquema; O CSV, por outro lado, possui um layout fixo para colunas. Sem saber quais campos são usados em diferentes documentos, é impossível gerar o dump CSV.
Se você tiver um esquema fixo, talvez possa recuperar um documento, coletar os nomes de campo dele com um script e passá-lo para mongoexport.
fonte
Se desejar, você pode exportar todas as coleções para csv sem especificar
--fields
(exportará todos os campos).Em http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/ execute este script bash
fonte
Não consegui que a mongoexport fizesse isso por mim. Descobri que, para obter uma lista exaustiva de todos os campos, você precisa percorrer toda a coleção uma vez. Use isso para gerar os cabeçalhos. Em seguida, faça um loop pela coleção novamente para preencher esses cabeçalhos para cada documento.
Eu escrevi um script para fazer exatamente isso. Converter documentos do MongoDB em csv, independentemente das diferenças de esquema entre documentos individuais.
https://github.com/surya-shodan/mongoexportcsv
fonte
Além disso, se você deseja exportar campos json internos, use ponto (operador.).
Registro JSON:
Comando mongoexport com operador ponto (usando mongo versão 3.4.7):
Saída csv:
Nota: Certifique-se de não exportar uma matriz. Isso corromperia o formato CSV, como os userIds de campo mostrados acima
fonte
Solução para usuários MongoDB Atlas!
Adicione o
--fields
parâmetro como nomes de campo separados por vírgula entre aspas duplas invertidas:Este é um exemplo completo:
fonte
Isso está funcionando para mim Experimente
Acima cmd retorna dados inteiros da coleção de usuários se você deseja filtrar o campo, então adicione --fields = email, nome
fonte
funciona para mim remotamente para um contêiner docker com mongo: 4.2.6
fonte
Comando abaixo usado para exportar a coleção para o formato CSV.
Nota:
naag
é banco de dados,employee1_json
é uma coleção.fonte
Para todos aqueles que estão presos a um erro.
Deixe-me dar a vocês uma solução com uma breve explicação do mesmo: -
comando para conectar: -
--host -> host do servidor Mongo
--port -> porta do servidor Mongo
-u -> nome de usuário
-p -> senha
--db -> db do qual você deseja exportar
--collection -> coleção que você deseja exportar
--type -> tipo de exportação no meu caso CSV
--out -> nome do arquivo onde você deseja exportar
--fields -> todos os campos que você deseja exportar (não dê espaços entre dois nomes de campo entre vírgulas no caso de CSV)
--authenticationDatabase -> banco de dados onde todas as suas informações de usuário são armazenadas
fonte