Forma correcta de importar un archivo json a mongo

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

Este es un ejemplo del .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.

Por eso cuando trato de encontrar una tienda o cualquier cosa que quiero consultar, me devuelven todo el documento.

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

Quiero poder consultar la base de datos para obtener productos por la identificación usando 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?

preguntado el 12 de junio de 12 a las 15:06

su enlace tiene una 'a' extra al final -

@ErenGüven ¡Vaya! ¡Gracias por la advertencia! ;) -

4 Respuestas

Docs tenga en cuenta que:

Esta utilidad toma un solo 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 esencia estén solucionados, esencialmente está importando un documento con solo shops campo.

Después de dividir los datos en documentos de tienda separados, importe usando algo como (siendo tiendas el nombre de la colección, tiene más sentido que usar example):

mongoimport -d test -c shops data.json

y luego puedes consultar como:

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

Respondido el 12 de junio de 12 a las 16:06

Hay un parámetro --jsonArray:

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

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

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

./jq '.shops' shops.json

contestado el 21 de mayo de 13 a las 20:05

IMPORTAR DESDE 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 DESDE CSV

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

MÁS INFO

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

Respondido 18 Feb 18, 01:02

Importando un JSON

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

Respondido 29 ago 16, 17:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.