As ferramentas de banco de dados MongoDB incluem um utilitário chamado
mongoexport
que permite exportar dados do MongoDB para um arquivo CSV ou JSON. Uma das coisas que você pode fazer com esse utilitário é exportar os resultados da consulta. Este artigo mostra como usar
mongoexport
para exportar os resultados da consulta do MongoDB para um arquivo CSV. Sintaxe
A sintaxe para
mongoexport
fica assim:mongoexport --collection=<coll> <options> <connection-string>
Você precisa executar
mongoexport
comandos da linha de comando do seu sistema (por exemplo, um novo Terminal ou janela de prompt de comando). Não execute
mongoexport
comandos do mongo
Concha. Exemplo
O código de exemplo a seguir exporta os resultados de uma consulta para um arquivo CSV:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
Isso exporta uma consulta que consulta uma coleção chamada
pets
no PetHotel
base de dados. A consulta é exportada para um arquivo chamado dogs.csv
nos data/
pasta. Se a pasta não existir, ela será criada. O mesmo com o arquivo. A propósito, isso pressupõe que não há problemas de permissão ao gravar um arquivo no local especificado.
Neste exemplo, não especifiquei nenhum host, porta, autenticação etc., portanto, ele exporta a coleção da instância do MongoDB em execução no número de porta localhost padrão
27017
. Abaixo está uma explicação dos parâmetros que fornecemos aqui.
Parâmetro | Descrição |
---|---|
--db ou -d | Especifica o banco de dados no qual executar mongoexport . Neste caso, o banco de dados é chamado de PetHotel . Este parâmetro pode ser passado alternativamente usando -d (em vez de --db ). |
--collection ou -c | Especifica a coleção que queremos exportar (ou executar a consulta). Neste caso, a coleção é chamada de pets . Este parâmetro também pode ser passado como -c (em vez de --collection ). |
--type | Especifica o tipo de arquivo exportado. Neste caso especificamos csv para exportá-lo para um arquivo CSV. |
--fields | Especifica os campos que queremos exportar. Temos a opção de exportar todos os campos ou apenas alguns. Você precisa listar cada um aqui, separado por uma vírgula. Ao exportar para CSV, especificar os nomes dos campos é um requisito. Você pode fazer isso através dos --fields parâmetro ou o --fieldFile parâmetro (mais sobre isso depois). |
--query ou -q | Especifica a consulta para quais resultados queremos exportar. Isso deve ser colocado entre aspas simples (para que não interaja com seu shell). Este parâmetro também pode ser passado usando -q . |
--out | Especifica o nome do arquivo exportado e onde ele será localizado. Se você não especificar um nome de arquivo, mongoexport grava dados na saída padrão (stdout ). |
Verifique o arquivo exportado
Vamos verificar se a operação de exportação funcionou conforme o esperado.
Primeiro, vamos executar a consulta na coleção original.
use PetHotel
db.pets.find({ "type": "Dog" })
Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Assim podemos ver que são 4 cães, todos com os mesmos campos que especificamos em nossa operação de exportação.
Agora vamos abrir o arquivo exportado
dogs.csv
para ver o que tem dentro:_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 6,Fetch,Dog,17 7,Jake,Dog,30
OK, todos os dados estão no arquivo exportado conforme o esperado.
Exportar menos campos
Você pode especificar menos campos com o
--fields
parâmetro, se desejar. Exemplo:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
Arquivo resultante:
name,weight Wag,20 Bark,10 Fetch,17 Jake,30
Remover cabeçalhos de coluna
Você notará que o arquivo exportado nos exemplos anteriores incluiu os cabeçalhos das colunas.
Você também tem a opção de exportar o arquivo sem cabeçalhos de coluna. Para fazer isso, use o
--noHeaderLine
parâmetro. Exemplo:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --noHeaderLine --out=data/dogs.csv
Agora, quando abro o arquivo exportado, não há cabeçalhos de coluna:
1,Wag,Dog,20 2,Bark,Dog,10 6,Fetch,Dog,17 7,Jake,Dog,30
Use um arquivo para os nomes dos campos
Você pode substituir o
--field
parâmetro com o --fieldFile
parâmetro para especificar o nome de um arquivo que contém os nomes de campo que você deseja exportar. mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/dogs_fields.txt --query='{ "type": "Dog" }' --out=data/dogs.csv
O arquivo que contém os campos deve ter os campos listados, um por linha.
Veja o que o
dogs_fields.txt
arquivo parecia para este exemplo:name type weight
Isso resultou no conteúdo do arquivo exportado assim:
name,type,weight Wag,Dog,20 Bark,Dog,10 Fetch,Dog,17 Jake,Dog,30
Alterando a ordem das colunas
Você pode mudar a ordem dos campos para exportar. Eles não precisam estar na mesma ordem que o documento subjacente.
Por exemplo, este código:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --query='{ "type": "Dog" }' --out=data/dogs.csv
Resultados no seguinte arquivo CSV:
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 Dog,Fetch,17,6 Dog,Jake,30,7
Controle de acesso/autenticação
Se você não estiver usando localhost, você pode usar o
--host
parâmetro para especificar o host e --port
para especificar a porta. Você também pode usar o --username
parâmetro para especificar o nome de usuário e --password
para a senha. Se você omitir o parâmetro de senha, ele será solicitado. Há também um --authenticationDatabase
parâmetro para especificar o banco de dados de autenticação onde o usuário foi criado. Exemplo:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
Verifique se há mongoexport
mongoexport
faz parte do pacote MongoDB Database Tools. As ferramentas de banco de dados do MongoDB são um conjunto de utilitários de linha de comando para trabalhar com o MongoDB. Se você não tem certeza se possui o MongoDB Database Tools/
mongoexport
instalado, tente executar o seguinte comando no seu Terminal ou Prompt de Comando para verificar:mongoexport --version
Se você o tiver, deverá ver as informações da versão, etc. Se não o tiver, poderá usar as instruções de instalação no site do MongoDB para instalá-lo em seu sistema.
Onde executar os comandos?
Não se esqueça, você precisa executar
mongoexport
comandos da linha de comando do seu sistema (por exemplo, um novo Terminal ou janela de prompt de comando).