Inserte el archivo json en mongodb

81

Soy nuevo en MongoDB. Después de instalar MongoDB en Windows, estoy tratando de insertar un archivo json simple usando el siguiente comando:

C:\>mongodb\bin\mongoimport --db test --collection docs < example2.json

Estoy teniendo el siguiente error:

connected to: 127.0.0.1
Fri Oct 18 09:05:43.749 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:43
Fri Oct 18 09:05:43.750
Fri Oct 18 09:05:43.750 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.751 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:42
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.751 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.751
Fri Oct 18 09:05:43.752 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Field name expected: offset:44
Fri Oct 18 09:05:43.752
Fri Oct 18 09:05:43.752 exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Fri Oct 18 09:05:43.752
Fri Oct 18 09:05:43.752 check 0 0
Fri Oct 18 09:05:43.752 imported 0 objects
Fri Oct 18 09:05:43.752 ERROR: encountered 6 error(s)s

ejemplo2.json

{"FirstName": "Bruce", "LastName": "Wayne", 
"Email": "[email protected]"}
{"FirstName": "Lucius", "LastName": "Fox", 
"Email": "[email protected]"}
{"FirstName": "Dick", "LastName": "Grayson", 
"Email": "[email protected]"}

¿Qué debo hacer para importar un nuevo archivo json a mongodb?

Arrendajo
fuente
2
Es un requisito de mongoimport que cada documento esté en una nueva línea.
Samuel O'Malley
2
Debe aceptar (marcar) la respuesta que resuelve su problema.
Sumit Kamboj

Respuestas:

108

Utilizar

mongoimport --jsonArray --db test --collection docs --file example2.json

Probablemente se esté estropeando por los caracteres de nueva línea.

León
fuente
Este comando debe ejecutarse desde el directorio donde está presente 'mongoimport.exe'. El archivo JSON también debe estar presente en ese directorio.
Samdish Arora
el comando debe ejecutarse dentro de la carpeta data / db, a menos que obtenga un error.
Zeinab
55

El siguiente comando funcionó para mí

mongoimport --db test --collection docs --file example2.json

cuando eliminé el carácter de nueva línea adicional antes del Emailatributo en cada uno de los documentos.

ejemplo2.json

{"FirstName": "Bruce", "LastName": "Wayne", "Email": "[email protected]"}
{"FirstName": "Lucius", "LastName": "Fox", "Email": "[email protected]"}
{"FirstName": "Dick", "LastName": "Grayson", "Email": "[email protected]"}
mithunsatheesh
fuente
36

Esto funcionó para mí - (de mongo shell)

var file = cat('./new.json');     # file name
use testdb                        # db name
var o = JSON.parse(file);         # convert string to JSON
db.forms.insert(o)                # collection name
nanusdad
fuente
Que guay. Usar mongo shell como intérprete para el sistema operativo y usar comandos "bash" como funciones. Ni siquiera sabía que Mongo puede acceder al árbol de archivos de esta manera. ¡Gracias!
Rea Haas
15

Utilice el siguiente comando al importar el archivo JSON

C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs --file example2.json
Sumit Kamboj
fuente
3

las siguientes dos formas funcionan bien:

C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs --file example2.json
C:\>mongodb\bin\mongoimport --jsonArray -d test -c docs < example2.json

si las colecciones están bajo un usuario específico, puede usar -u -p --authenticationDatabase

usuario10383785
fuente
2
mongoimport --jsonArray  -d DatabaseN -c collectionName /filePath/filename.json
Vijay Prajapati
fuente
1

Esta solución es aplicable a la máquina Windows.

  1. MongoDB necesita un directorio de datos para almacenar datos. La ruta predeterminada es C:\data\db. En caso de que no tenga el directorio de datos, cree uno en su unidad C :. (PD: data \ db significa que hay un directorio llamado 'db' dentro del directorio 'data')

  2. Coloque el JSON que desea importar en este camino: C:\data\db\.

  3. Abra el símbolo del sistema y escriba el siguiente comando

    mongoimport --db databaseName --collections collectionName --file fileName.json --type json --batchSize 1

Aquí,

  • databaseName: el nombre de su base de datos
  • collectionName: el nombre de tu colección
  • fileName: nombre de su archivo json que se encuentra en la ruta C: \ data \ db
  • batchSize puede ser cualquier número entero según su deseo
Steffi Keran Rani J
fuente
1
¡Me ayudó mucho! Gracias
filipbarak
0

En MS Windows, el comando mongoimport debe ejecutarse en un símbolo del sistema de Windows normal, no desde el símbolo del sistema mongodb.

Baraka215
fuente
lo mismo para Unix. mongoimport debe ejecutarse desde una terminal normal como mongod.
Doel
0

En MongoDB Para insertar datos de la matriz Json desde un archivo (desde una ubicación particular desde un sistema / pc) usando el comando mongo shell. Mientras se ejecuta el siguiente comando, el comando debe estar en una sola línea.

var file = cat ('I: /data/db/card_type_authorization.json'); var o = JSON.parse (archivo); db.CARD_TYPE_AUTHORIZATION.insert (o);

Archivo JSON: card_type_authorization.json

[{
"code": "visa",
"position": 1,
"description": "Visa",
"isVertualCard": false,
"comments": ""
},{
    "code": "mastercard",
    "position": 2,
    "description": "Mastercard",
    "isVertualCard": false,
    "comments": ""
}]
UdayKiran Pulipati
fuente
0

Abra el símbolo del sistema por separado y verifique:

C: \ mongodb \ bin \ mongoimport --db nombre_bd --colección nombre_colección <nombre_archivo.json

Prakash Singh
fuente