Por fin luego de tanto trabajar ya encontramos la solución de esta cuestión que agunos usuarios de esta web han tenido. Si quieres aportar algo más no dudes en compartir tu conocimiento.
Solución:
los mongoimport
herramienta tiene una opción:
--jsonArray
tratar la fuente de entrada como un JSON array
O es posible importar desde un archivo que contiene el mismo formato de datos como resultado de db.collection.find()
dominio. Aquí hay un ejemplo de material didáctico university.mongodb.com, algo de contenido de 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, no array usado y sin delimitadores de coma entre documentos tampoco.
Descubro, recientemente, que esto cumple con the JSON Lines text
formato.
Como uno usado en apache.spark.sql.DataFrameReader.json()
método.
Quizás la siguiente referencia del blog del proyecto MongoDB podría ayudarlo a comprender cómo funcionan las matrices en Mongo:
https://blog.mlab.com/2013/04/thinking-about-arrays-in-mongodb/
Enmarcaría su importación de otra manera, y:
a) importa los tres objetos diferentes por separado en la colección como dices, usando el indicador –jsonArray; o
b) encapsular el completo array dentro de un solo objeto, por ejemplo de esta manera:
"mydata":
[
"project": "project_1",
...
"priority": 7
]
HH.
Me enfrenté al problema opuesto hoy, mi conclusión sería:
Si desea insertar array de objetos JSON a la vez, donde cada array La entrada se tratará como una entrada de base de datos separada, tiene dos opciones de sintaxis:
-
Matriz de objetos con posiciones de coma válidas y bandera –jsonArray obligatoria
[ obj1, obj2, obj3 ]
-
Use un archivo con un formato JSON básicamente incorrecto (es decir, falta
,
entre instancias de objetos JSON y sin el indicador –jsonArrayobj1 obj2 obj3
Si desea insertar sólo un array (es decir array como ciudadano de nivel superior de su base de datos) Creo que no es posible ni 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 array en el objeto JSON como señaló ALAN WARD.
Finalizando este artículo puedes encontrar las notas de otros gestores de proyectos, tú igualmente puedes mostrar el tuyo si lo deseas.