Volcar la colección Mongo en formato JSON

119

¿Hay alguna forma de volcar la colección mongo en formato json? Ya sea en el shell o usando el controlador java. Estoy buscando el que tenga el mejor rendimiento.

Parvin Gasimzade
fuente
mongoexport -d <database> -c <collection_name> --out <xxx.json> --pretty --host <host> --port <port> --username <user> --authenticationDatabase adminPuede especificar el host, port, username, passwordde esta manera y la base de datos de autenticación por defecto es admin.
Max Peng

Respuestas:

177

Mongo incluye una utilidad mongoexport (ver documentos) que puede volcar una colección. Esta utilidad utiliza el libmongoclient nativo y probablemente sea el método más rápido.

mongoexport -d <database> -c <collection_name>

También es útil:

-o: escribe la salida en un archivo, de lo contrario se usa la salida estándar ( docs )

--jsonArray: genera un documento json válido, en lugar de un objeto json por línea ( docs )

--pretty: salidas con formato json ( docs )

vrtx
fuente
8
Use la marca -d para especificar qué base de datos usar.
Devolución del
8
Si desea un JSON bastante impreso (por ejemplo, para inspeccionar una colección durante el desarrollo) use la --prettybandera:mongoexport -d mydatabase -c mycollection --pretty
Max Truxa
6
Si Mongo está ubicado en un host diferente, aquí hay un ejemplo del documento de Mongo mongoexport --host mongodb1.example.net --port 37017 --username user --password "pass" --collection contacts --db marketing --out mdb1-examplenet.json
¿Qué sería genial?
Parece que --prettyse ha ido a partir de la versión 2.6.10.
agua helada
115

Utilice mongoexport / mongoimport para volcar / restaurar una colección:

Exportar archivo JSON :

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

Importar archivo JSON :

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

ADVERTENCIA mongoimporty mongoexportno conserve de manera confiable todos los tipos de datos BSON enriquecidos porque JSON solo puede representar un subconjunto de los tipos admitidos por BSON. Como resultado, los datos exportados o importados con estas herramientas pueden perder algo de fidelidad.

Además, http://bsonspec.org/

BSON está diseñado para ser rápido de codificar y decodificar. Por ejemplo, los enteros se almacenan como enteros de 32 (o 64) bits, por lo que no es necesario analizarlos desde y hacia el texto. Esto usa más espacio que JSON para enteros pequeños, pero es mucho más rápido de analizar.

Además de la compacidad, BSON agrega tipos de datos adicionales que no están disponibles en JSON, en particular los tipos de datos BinData y Date.

Priyanshu Chauhan
fuente
1
¿Hay un ejemplo de lo que “los datos BSON ricos” no sobreviviría a un mongoexport/ mongoimportde ida y vuelta?
andrewdotn
1
Agrega soporte para tipos de datos como Date y binary que no son compatibles con JSON. Además, más rápido para codificar y decodificar bsonspec.org
Priyanshu Chauhan
5

Aquí está el comando mío como referencia:

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

En Windows 7 (MongoDB 3.4), uno tiene que mover el cmd al lugar donde mongod.exey mongo.exereside el archivo => C:\MongoDB\Server\3.4\binde lo contrario no funcionará diciendo que no hace recongnize mongoexportcomando.

Furia Nocturna
fuente
¿Alguien sabe de un formateador que formatee json normal al formato tonto de "línea única sin coma" que MongoDB espera al importar?
conor909
-2

Si desea volcar todas las colecciones, ejecute este comando:

mongodump -d {DB_NAME}   -o /tmp 

Generará todos los datos de las colecciones jsony las bsonextensiones en el /tmp/{DB_NAME}directorio.

Moe Far
fuente
De hecho, todavía está descargando bson y metadata.bson :-(
Prasad
9
Esta respuesta es incorrecta. mongodumpemite datos en BSONformato. Otras respuestas referidas correctamente mongoexportcomo la herramienta adecuada.
Christian Dechery
Esto funciona para mí, está generando toda la colección en una carpeta tmp con archivos bson y json. Usé mongodump -d {dbname} -o tmp
shyamzzp