university tutorial example descargar caracteristicas mongodb

tutorial - Importar json desde un archivo a mongodb usando mongoimport



mongodb university (3)

Tengo mi json_file.json así:

[ { "project": "project_1", "coord1": 2, "coord2": 10, "status": "yes", "priority": 7 }, { "project": "project_2", "coord1": 2, "coord2": 10, "status": "yes", "priority": 7 }, { "project": "project_3", "coord1": 2, "coord2": 10, "status": "yes", "priority": 7 } ]

Cuando ejecuto el siguiente comando para importar esto a mongodb:

mongoimport --db my_db --collection my_collection --file json_file.json

Obtuve el siguiente error:

Failed: error unmarshaling bytes on document #0: JSON decoder out of sync - data changing underfoot?

Si agrego el indicador --jsonArray al comando que importo así:

imported 3 documents

en lugar de un documento con el formato json como se muestra en el archivo original.

¿Cómo puedo importar json en mongodb con el formato original en el archivo que se muestra arriba?


Hoy enfrenté un problema opuesto, mi conclusión sería:

Si desea insertar una matriz de objetos JSON a la vez, donde cada entrada de matriz se tratará como una entrada de base de datos separada, tiene dos opciones de sintaxis:

  1. Matriz de objeto con posiciones de coma válidas y --json Indicador de matriz obligatorio

    [ {obj1}, {obj2}, {obj3} ]

  2. Use el archivo con un formato JSON básicamente incorrecto (es decir , falta , entre instancias de objetos JSON y sin el indicador --jsonArray

    {obj1} {obj2} {obj3}

Si desea insertar solo una matriz (es decir, una matriz como ciudadano de nivel superior de su base de datos), creo que no es posible y no es válido, porque mongoDB, por definición, admite documentos como objetos de nivel superior que luego se asignan a objetos JSON. En otras palabras, debe envolver su matriz en un objeto JSON como señaló ALAN WARD.


La herramienta mongoimport tiene una opción:
--jsonArray trata la fuente de entrada como una matriz JSON
O es posible importar desde un archivo
que contiene el mismo formato de datos que
El resultado del db.collection.find() .
Aquí hay un ejemplo del material de curso university.mongodb.com
algún contenido de los grades.json :

{ "_id" : { "$oid" : "50906d7fa3c412bb040eb577" }, "student_id" : 0, "type" : "exam", "score" : 54.6535436362647 } { "_id" : { "$oid" : "50906d7fa3c412bb040eb578" }, "student_id" : 0, "type" : "quiz", "score" : 31.95004496742112 } { "_id" : { "$oid" : "50906d7fa3c412bb040eb579" }, "student_id" : 0, "type" : "homework", "score" : 14.8504576811645 }

Como puedes ver,
ninguna matriz utilizada y
tampoco delimitadores de coma entre documentos.

Descubro, recientemente,
que esto cumple con the JSON Lines text formato de the JSON Lines text .
Como uno usado en el método apache.spark.sql.DataFrameReader.json() .


Quizás la siguiente referencia del blog del proyecto MongoDB podría ayudarlo a obtener información sobre cómo funcionan las matrices en Mongo:

https://blog.mlab.com/2013/04/thinking-about-arrays-in-mongodb/

De lo contrario, enmarcaría su importación y:

a) importe los tres objetos diferentes por separado en la colección como usted dice, usando la bandera --jsonArray; o

b) encapsular la matriz completa dentro de un solo objeto, por ejemplo de esta manera:

{ "mydata": [ { "project": "project_1", ... "priority": 7 } ] }

HTH