@ karoly-horvath tiene razón. Los campos son obligatorios para csv.
De acuerdo con este error en el rastreador de problemas de MongoDB https://jira.mongodb.org/browse/SERVER-4224 , DEBE proporcionar los campos al exportar a un csv . Los documentos no lo tienen claro. Ésa es la razón del error.
Prueba esto:
mongoexport --host localhost --db dbname --collection name --csv --out text.csv --fields firstName,middleName,lastName
ACTUALIZAR:
Esta confirmación: https://github.com/mongodb/mongo-tools/commit/586c00ef09c32c77907bd20d722049ed23065398 corrige los documentos para 3.0.0-rc10 y versiones posteriores. Cambia
Fields string `long:"fields" short:"f" description:"comma separated list of field names, e.g. -f name,age"`
a
Fields string `long:"fields" short:"f" description:"comma separated list of field names (required for exporting CSV) e.g. -f \"name,age\" "`
VERSIÓN 3.0 Y SUPERIORES:
Debería utilizarlo en --type=csv
lugar de, --csv
ya que ha quedado obsoleto.
Más detalles: https://docs.mongodb.com/manual/reference/program/mongoexport/#export-in-csv-format
Mando completo:
mongoexport --host localhost --db dbname --collection name --type=csv --out text.csv --fields firstName,middleName,lastName
mongoexport
dicecsv flag is deprecated; please use --type=csv instead
Además, no se permiten espacios entre los nombres de campo separados por comas.
MALO:
-f firstname, lastname
BUENO:
-f firstname,lastname
fuente
Tienes que especificarlo manualmente y si lo piensas, tiene mucho sentido. MongoDB no tiene esquema; CSV, por otro lado, tiene un diseño fijo para columnas. Sin saber qué campos se utilizan en diferentes documentos, es imposible generar el volcado CSV.
Si tiene un esquema fijo, tal vez pueda recuperar un documento, recopilar los nombres de campo de él con un script y pasarlo a mongoexport.
fuente
Si lo desea, puede exportar todas las colecciones a csv sin especificar
--fields
(exportará todos los campos).Desde http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/ ejecute este script bash
fuente
No pude conseguir que mongoexport hiciera esto por mí. Descubrí que, para obtener una lista exhaustiva de todos los campos, es necesario recorrer toda la colección una vez. Use esto para generar los encabezados. Luego, recorre la colección nuevamente para completar estos encabezados para cada documento.
Escribí un guión para hacer precisamente esto. Conversión de documentos de MongoDB a csv independientemente de las diferencias de esquema entre documentos individuales.
https://github.com/surya-shodan/mongoexportcsv
fuente
Además, si desea exportar campos json internos, use el punto (operador.).
Registro JSON:
Comando mongoexport con operador de punto (usando mongo versión 3.4.7):
Salida csv:
Nota: asegúrese de no exportar una matriz. Corrompería el formato CSV como el campo userIds que se muestra arriba
fuente
¡Solución para usuarios de MongoDB Atlas!
Agregue el
--fields
parámetro como nombres de campo separados por comas encerrados entre comillas dobles invertidas:Este es un ejemplo completo:
fuente
Esto funciona para mí Pruébalo
Por encima de cmd, devuelva los datos completos de la colección de usuarios si desea un campo de filtro y luego agregue --fields = email, name
fuente
funciona para mí de forma remota a un contenedor docker con mongo: 4.2.6
fuente
Para todos aquellos que están atrapados en un error.
Permítanme darles una solución con una breve explicación de la misma:
comando para conectar: -
--host -> host del servidor Mongo
--port -> puerto del servidor Mongo
-u -> nombre de usuario
-p -> contraseña
--db -> db desde el que desea exportar
--colección -> colección que desea exportar
--type -> tipo de exportación en mi caso CSV
--out -> nombre del archivo donde desea exportar
--fields -> todos los campos que desea exportar (no deje espacios entre el nombre de dos campos entre comas en caso de CSV)
--authenticationDatabase -> base de datos donde se almacena toda la información de su usuario
fuente
El siguiente comando se usa para exportar la colección a formato CSV.
Nota:
naag
es una base de datos,employee1_json
es una colección.fuente