2012-06-12 14 views
38

Próbowałem użyć mongo z niektórymi importowanymi danymi, ale nie jestem w stanie użyć go prawidłowo z opisem mojego dokumentu.Właściwy sposób importowania pliku json do mongo

Jest przykładem .json importować przy użyciu mongoimport: https://gist.github.com/2917854

mongoimport -d test -c example data.json 

zauważyłem, że cały mój dokument to importowane do unikalnego obiektu pomimo utworzenia jednego obiektu dla każdego sklepu.

Dlatego kiedy próbuję znaleźć sklep lub cokolwiek, co chcę zapytać, cały dokument jest zwracany.

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

Chcę móc kwerendy db do uzyskania produktów o id używając kropki notacji coś podobnego do:

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

Problem polega na tym, że cały dokument jest importowany jak pojedynczy obiekt. Pytanie brzmi: w jaki sposób muszę zaimportować obiekt, aby uzyskać pożądany rezultat, w jaki sposób
?

+1

swój link ma dodatkowy 'a' na końcu –

+0

@ ErenGüven Ups! Dzięki za ostrzeżenie! ;) – Nahikariii

Odpowiedz

36

Docs zauważyć, że:

Narzędzie pobiera pojedynczy plik, który zawiera 1 JSON/CSV/TSV ciąg jednej linii i wstawia go.

W strukturze używasz -assuming błędów na GIST są zasadniczo o stałej jesteś importowanie jednego dokumentu tylko shops dziedzinie.

Po przełamaniu dane w oddzielnych docs sklepowych, import używając coś jak (sklepy to nazwa kolekcji, ma większy sens niż przy użyciu example):

mongoimport -d test -c shops data.json 

a następnie można zapytać jak:

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

nie jest parametrem --jsonArray:

Zebrane import danych wyrażonych z wielu dokumentów MongoDB w jednym JSON ARR ay

Używając tej opcji możesz podać jej tablicę, więc musisz tylko odciąć składnię obiektu zewnętrznego, to znaczy wszystko od początku aż do "shops" : włącznie i na końcu.

Ja używam małe narzędzie o nazwie jq które można wyodrębnić tablicę z wiersza poleceń:

./jq '.shops' shops.json 
0

Importowanie JSON

Komenda mongoimport pozwala nam importować czytelnej JSON w konkretnej bazy danych & kolekcja.Aby zaimportować JSON danych w określonej bazie & zbiór, typ mongoimport -d databaseName -c collectionName jsonFileName.json

8

import z JSON

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

formacie JSON powinny być w tym formacie. (Tablica obiektów)

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

IMPORT Z CSV

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

Więcej informacji

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

Powiązane problemy