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. Este artigo mostra como usar
mongoexport
para exportar uma coleção do MongoDB para um arquivo JSON. 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. Exportar uma coleção
O código de exemplo a seguir exporta uma coleção do MongoDB para um arquivo JSON:
mongoexport --db=PetHotel --collection=pets --out=data/pets.json
Isso exporta uma coleção chamada
pets
do PetHotel
banco de dados para um arquivo chamado pets.json
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
. O exemplo acima também pode ser escrito assim:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --out=data/pets.json
Neste caso, adicionamos o
--type
parâmetro e um --fields
parâmetro para especificar quais campos incluir no arquivo JSON. Abaixo está uma explicação dos parâmetros que fornecemos aqui.
Parâmetro | Descrição |
---|---|
--db ou -d | Especifica o banco de dados que contém a coleção que desejamos exportar. 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. 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 json para exportá-lo para um arquivo JSON. json é o valor padrão, portanto, se não especificarmos esse parâmetro, o arquivo será gerado como um arquivo JSON. |
--fields | Especifica os campos que queremos exportar. Temos a opção de exportar todos os campos da coleção, ou apenas alguns. Separe vários nomes de campo com uma vírgula. Ao exportar para JSON, especificar nomes de campo é opcional (diferente de CSV). |
--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 verificar a coleção original.
use PetHotel
db.pets.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Assim podemos ver que são 7 pets, todos com os mesmos campos que especificamos em nossa operação de exportação.
Agora vamos abrir o arquivo exportado
pets.json
para ver o que tem dentro:{"_id":1.0,"name":"Wag","type":"Dog","weight":20.0} {"_id":2.0,"name":"Bark","type":"Dog","weight":10.0} {"_id":3.0,"name":"Meow","type":"Cat","weight":7.0} {"_id":4.0,"name":"Scratch","type":"Cat","weight":8.0} {"_id":5.0,"name":"Bruce","type":"Bat","weight":3.0} {"_id":6.0,"name":"Fetch","type":"Dog","weight":17.0} {"_id":7.0,"name":"Jake","type":"Dog","weight":30.0}
Todos os dados estão no arquivo exportado conforme o esperado.
Menos campos
Você pode usar os
--fields
parâmetro para especificar quais campos você deseja exportar. Quando você faz isso em arquivos JSON, o
_id
campo é sempre exportado (mesmo quando você não o inclui na lista de campos a serem exportados). Exemplo:
mongoexport --db=PetHotel --collection=pets --fields=name,type --out=data/pets.json
Neste caso eu especifico dois campos para exportar.
Quando abro o arquivo exportado, vejo que ambos os campos foram exportados, mais o
_id
campo:{"_id":1.0,"name":"Wag","type":"Dog"} {"_id":2.0,"name":"Bark","type":"Dog"} {"_id":3.0,"name":"Meow","type":"Cat"} {"_id":4.0,"name":"Scratch","type":"Cat"} {"_id":5.0,"name":"Bruce","type":"Bat"} {"_id":6.0,"name":"Fetch","type":"Dog"} {"_id":7.0,"name":"Jake","type":"Dog"}
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 --out=data/pets.json
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). Não os execute a partir do
mongo
Concha.