La forma correcta de importar el archivo json a mongo

He intentado usar mongo con algunos datos importados, pero no puedo usarlo correctamente con la descripción de mi documento.

Este es un ejemplo de .json que importo usando mongoimport: https://gist.github.com/2917854

mongoimport -d test -c example data.json 

Noté que todo mi documento se importa a un objeto único a pesar de crear uno de objeto para cada tienda.

Es por eso que cuando trato de encontrar una tienda o cualquier cosa que quiera consultar, se devuelve todo el documento.

 db.example.find({"shops.name":"x"}) 

Quiero poder consultar el archivo db para obtener productos mediante el ID usando la notación de puntos algo similar a:

 db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"} 

El problema es que todo el documento se importa como un solo objeto. La pregunta es: ¿Cómo?
¿Necesito importar el objeto para obtener el resultado deseado?

Los doctores notan que:

Esta utilidad toma un único archivo que contiene 1 cadena JSON / CSV / TSV por línea y lo inserta.

En la estructura que está utilizando -suponiendo que los errores en la esencia estén corregidos- usted está esencialmente importando un documento con solo el campo de shops .

Después de dividir los datos en documentos de taller separados, realice la importación usando algo así como (las tiendas son el nombre de la colección, tiene más sentido que usar el example ):

 mongoimport -d test -c shops data.json 

y luego puedes consultar como:

 db.shops.find({"name":x,"categories.type":"shirts"}) 

Hay un parámetro --jsonArray :

Acepte la importación de datos expresados ​​con múltiples documentos MongoDB dentro de una única matriz JSON

Al usar esta opción, puede alimentarlo con una matriz, por lo que solo necesita quitar la syntax del objeto externo, es decir, todo al principio hasta e incluyendo "shops" : y, finalmente, el } .

Yo uso una pequeña herramienta llamada jq que puede extraer la matriz de la línea de comandos:

 ./jq '.shops' shops.json 

IMPORTAR DE JSON

 mongoimport --db "databaseName" --collection "collectionName" --type json --file "fileName.json" --jsonArray 

El formato JSON debe estar en este formato. (Matriz de objetos)

 [ { name: "Name1", msg: "This is msg 1" }, { name: "Name2", msg: "This is msg 2" }, { name: "Name3", msg: "This is msg 3" } ] 

IMPORTAR DE CSV

 mongoimport --db "databaseName" --collection "collectionName" --type csv --file "fileName.csv" --headerline 

Más información

https://docs.mongodb.com/getting-started/shell/import-data/

Importación de un JSON

El comando mongoimport nos permite importar JSON legible para humanos en una base de datos específica y una colección. Para importar datos JSON en una base de datos específica y una colección, escriba mongoimport -d databaseName -c collectionName jsonFileName.json