Forma correcta de importar un archivo json a mongo
Frecuentes
Visto 63,231 veces
41
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?
4 Respuestas
37
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
23
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
11
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
Respondido 18 Feb 18, 01:02
1
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 json mongodb nosql or haz tu propia pregunta.
su enlace tiene una 'a' extra al final - Eren Güven
@ErenGüven ¡Vaya! ¡Gracias por la advertencia! ;) - Nahikariii