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.

Parvin Gasimzade
fonte
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 )

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

Priyanshu Chauhan
fonte
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.

Fúria da noite
fonte
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
3

Na documentação do Mongo:

O utilitário mongoexport coleta e exporta para JSON ou CSV. Você pode especificar um filtro para a consulta ou uma lista de campos para saída

Leia mais aqui: http://www.mongodb.org/display/DOCS/mongoexport

Ninja
fonte
-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

Moe Far
fonte
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