2012-06-12 96 views
38

He intentado usar mongo con algunos datos importados, pero no puedo usarlo correctamente con la descripción de mi documento.Forma correcta de importar el archivo json a mongo

Este es un ejemplo de la .json I Importar usando mongoimport: https://gist.github.com/2917854

mongoimport -d test -c example data.json 

me di cuenta de que toda mi documento se importa a un objeto único, a pesar de la creación de uno de objeto para cada tienda.

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

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

Quiero ser capaz de consultar la base de datos para obtener productos mediante el ID usando la notación algo de puntos 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 único objeto. La pregunta es: ¿Cómo
debo importar el objeto para obtener el resultado deseado?

+1

su enlace tiene un extra 'a' al final –

+0

@ ErenGüven Ups! ¡Gracias por la advertencia! ;) – Nahikariii

Respuesta

36

Docs nota que:

Esta utilidad tiene 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 sean corregidos- usted está importando esencialmente un solo documento con el campo shops.

Después de dividir los datos en documentos de tiendas independientes, la importación de usar algo como (tiendas de ser el nombre de la colección, tiene más sentido que el uso de example):

mongoimport -d test -c shops data.json 

y luego se puede consultar como:

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

hay un parámetro --jsonArray:

Aceptar importación de datos expresados ​​con múltiples documentos MongoDB dentro de un solo arr JSON ay

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

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

./jq '.shops' shops.json 
0

Importación de un JSON

El comando mongoimport nos permite importar legible JSON en una base de datos específica & Una colección.Para importar un conjunto de datos JSON en una base de datos específica & una colección, tipo mongoimport -d databaseName -c collectionName jsonFileName.json

8

IMPORTAR DE JSON

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

formato JSON debe ser 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/

Cuestiones relacionadas