Despejar a coleção Mongo no formato JSON


119

Existe alguma maneira de despejar a coleção mongo no formato json? Ou no shell ou usando o driver java. Estou procurando aquele com melhor desempenho.


mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminVocê pode especificar o host, port, username, passwordcomo este e o banco de dados de autenticação padrão é admin.
Max Peng

Respostas:


177

O Mongo inclui um utilitário mongoexport (consulte documentos) que pode despejar uma coleção. Este utilitário usa o libmongoclient nativo e é provavelmente o método mais rápido.

mongoexport -d <database> -c <collection_name>

Também é útil:

-o: escreve a saída no arquivo, caso contrário, a saída padrão é usada ( docs )

--jsonArray: gera um documento json válido, em vez de um objeto json por linha ( docs )

--pretty: produz json formatado ( docs )


8
Use o sinalizador -d para especificar qual banco de dados usar.
Reimund

8
Se você quer muito impresso JSON (por exemplo, para inspecionar uma coleção durante o desenvolvimento) usar a --prettybandeira:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa

6
Se o Mongo estiver localizado em um host diferente, aqui está um exemplo do documento do Mongo mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
O que seria legal

Parece que --prettyse foi a partir da versão 2.6.10.
icedwater

115

Use mongoexport / mongoimport para despejar / restaurar uma coleção:

Exportar arquivo JSON :

mongoexport --db <database-name> --collection <collection-name> --out output.json

Importar arquivo JSON :

mongoimport --db <database-name> --collection <collection-name> --file input.json

AVISO mongoimporte mongoexportnão preserve de forma confiável todos os tipos de dados BSON avançados, pois o JSON pode representar apenas um subconjunto dos tipos suportados pelo BSON. Como resultado, os dados exportados ou importados com essas ferramentas podem perder alguma medida de fidelidade.

Além disso, http://bsonspec.org/

O BSON foi projetado para ser rápido na codificação e decodificação. Por exemplo, números inteiros são armazenados como números inteiros de 32 (ou 64) bits, portanto, não precisam ser analisados ​​para e do texto. Isso usa mais espaço que JSON para números inteiros pequenos, mas é muito mais rápido para analisar.

Além da compacidade, o BSON adiciona tipos de dados adicionais indisponíveis no JSON, principalmente os tipos de dados BinData e Date.


1
Existe um exemplo de que “os dados BSON ricos” não sobreviveria a mongoexport/ mongoimportida e volta?
precisa saber é o seguinte

1
Ele adiciona suporte para tipos de dados como Data e binário que não são suportados no JSON. Além disso, mais rápido a codificação e decodificação bsonspec.org
Priyanshu Chauhan

5

Aqui está o meu comando para referência:

mongoexport --db AppDB --collection files --pretty --out output.json

No Windows 7 (MongoDB 3.4), tem de se mover o cmd para o lugar onde mongod.exee mongo.exereside arquivo => C:\MongoDB\Server\3.4\bino resto não vai funcionar dizendo que não faz recongnize mongoexportcomando.


Alguém conhece um formatador que formatará o json normal para o formato bobo "única linha sem vírgula" que o MongoDB espera ao importar?
conor909


-2

Se você deseja despejar todas as coleções, execute este comando:

mongodump -d {DB_NAME}   -o /tmp 

Ele irá gerar todos os dados de coleções jsone bsonextensões no /tmp/{DB_NAME}diretório


Por uma questão de fato, ele ainda está despejando bson e metadata.bson :-(
Prasad

9
Esta resposta está incorreta. mongodumpgera dados em BSONformato. Outras respostas corretamente referidas mongoexportcomo a ferramenta certa.
Christian Dechery

Isso está funcionando para mim, está gerando toda a coleção em uma pasta tmp com arquivos bson e json. Eu usei o mongodump -d {dbname} -o tmp
shyamzzp 10/09/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.