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": "bwayne@Wayneenterprises.com"}
{"FirstName": "Lucius", "LastName": "Fox", 
"Email": "lfox@Wayneenterprises.com"}
{"FirstName": "Dick", "LastName": "Grayson", 
"Email": "dgrayson@Wayneenterprises.com"}

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


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.


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": "bwayne@Wayneenterprises.com"}
{"FirstName": "Lucius", "LastName": "Fox", "Email": "lfox@Wayneenterprises.com"}
{"FirstName": "Dick", "LastName": "Grayson", "Email": "dgrayson@Wayneenterprises.com"}

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

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

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



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

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.


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": ""
}]

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.