MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como exportar resultados de consulta do MongoDB para um arquivo JSON


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 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.

Exemplo


O código de exemplo a seguir exporta os resultados de uma consulta para um arquivo JSON:
mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json

Isso exporta uma consulta que consulta uma coleção chamada pets no PetHotel base de dados. A consulta é exportada para um arquivo chamado dogs.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 .

Você também pode usar o --type parâmetro para especificar explicitamente JSON. O padrão é JSON, portanto, isso é opcional ao exportar para JSON.

Você também pode incluir um --fields parâmetro para especificar quais campos exportar. Por padrão, ele exporta todos os campos ao usar JSON. No entanto, ao exportar para CSV, você deve especificar quais campos exportar.

Aqui está um exemplo do exemplo acima com estes dois parâmetros adicionados:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json

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 json para exportá-lo para um arquivo JSON. Dado que JSON é o valor padrão, este parâmetro é opcional ao exportar para JSON.
--fields Especifica os campos que queremos exportar. Temos a opção de exportar todos os campos ou apenas alguns. Ao exportar para JSON, especificar os nomes dos campos é opcional (é um requisito ao exportar para CSV).
--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.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":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.

Exportar menos campos


Você pode especificar menos campos com o --fields parâmetro, se desejar.

Exemplo:
mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json

Arquivo resultante:
{"_id":1.0,"name":"Wag","weight":20.0}
{"_id":2.0,"name":"Bark","weight":10.0}
{"_id":6.0,"name":"Fetch","weight":17.0}
{"_id":7.0,"name":"Jake","weight":30.0}

Você notará que o _id campo foi incluído no arquivo exportado, embora eu não o tenha incluído explicitamente em --fields argumento. Isso porque o _id campo é sempre incluído ao exportar para JSON – mesmo quando você não o inclui explicitamente. Este não é o caso ao exportar para CSV.

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 --query='{ "type": "Dog" }' --out=data/dogs.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 em 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).