2015-05-07 56 views
1

我只是想問問我怎麼能導入新的MongoDB這個example.json文件我希望讓每個seassion對象行中我試圖導入JSON文件

mongoimport --db foo --collection myCollections < dataBuys.json 
2015-05-07T21:19:15.828+0300 connected to: localhost 
2015-05-07T21:19:18.831+0300 foo.myCollections 168.5 MB 
2015-05-07T21:19:21.826+0300 foo.myCollections 168.5 MB 
2015-05-07T21:19:24.828+0300 foo.myCollections 168.5 MB 
2015-05-07T21:19:27.828+0300 foo.myCollections 168.5 MB 
2015-05-07T21:19:28.849+0300 warning: attempting to insert document  with size 124.6 MB (exceeds 16.0 MB limit) 
2015-05-07T21:19:28.986+0300 error inserting documents: write tcp 127.0.0.1:27017: broken pipe 
2015-05-07T21:19:28.986+0300 imported 0 documents 

,這表

mongoimport -d mydb -c mycollection --jsonArray < dataBuys.json 
2015-05-07T21:20:02.139+0300 connected to: localhost 
2015-05-07T21:20:02.139+0300 Failed: error reading separator after document #1: bad JSON array format - found no opening bracket '[' in input source 
2015-05-07T21:20:02.139+0300 imported 0 documents 

我要導入的文件具有以下格式,其大小爲170mb,而另一個爲2.97GB。

{ 
"Sessions": { 
"420374" : { 
    "Purchases" : [ 
    { 
     "Price" : "12462", 
     "Quantity" : "1", 
     "Timestamp" : "2014-04-06T18:44:58.314Z", 
     "ItemId" : "214537888" 
    }, 
    { 
     "Price" : "10471", 
     "Quantity" : "1", 
     "Timestamp" : "2014-04-06T18:44:58.325Z", 
     "ItemId" : "214537850" 
    } 
    ] 
}, 

"281626" : { 
    "Purchases" : [ 
    { 
     "Price" : "1883", 
     "Quantity" : "1", 
     "Timestamp" : "2014-04-06T09:40:13.032Z", 
     "ItemId" : "214535653" 
    } 
    ] 
}, 

"420368" : { 
    "Purchases" : [ 
    { 
     "Price" : "6073", 
     "Quantity" : "1", 
     "Timestamp" : "2014-04-04T06:13:28.848Z", 
     "ItemId" : "214530572" 
    }, 
    { 
     "Price" : "2617", 
     "Quantity" : "1", 
     "Timestamp" : "2014-04-04T06:13:28.858Z", 
     "ItemId" : "214835025" 
    } 
    ] 
} 
} 
} 

我必須重新格式化json嗎?是否有可能使它像這樣工作?

回答

3

第一個錯誤信息說: 警告:嘗試與尺寸插入文件124.6 MB(超過16.0 MB限制)

這意味着您要插入的文件大小爲124.6MB。 一個json文檔以一個大括號字符「{」開始,並以一個大括號字符「}」結尾。錯誤消息意味着你在這些字符之間有124.6MB。

我認爲你需要檢查你的輸入文件,並驗證每個會話對象被定義爲一個單獨的文檔 - 另一個單詞以大括號開頭和結尾。

我懷疑問題是會話對象實際上嵌入在主文檔中 - 對容器文檔進行排序。這將使mongoimport嘗試將主容器文檔映射到其集合 - 而不是您需要的會話對象。

+0

我認爲帕特是正確的,您目前的格式將無法正常工作。在這裏查看另一種替代格式:http://stackoverflow.com/a/16677630/371273 –

+0

所以簡單的答案是mongodb無法以這種格式導入json它應該是與像這樣的對象的行數組{{「stupid」: 「bla bla」,「megaStupid 」:「bla bla」} –

1

首先,爲了驗證您的GeoJSON文件是否準確,您可以使用Geojsonlint,QGIS等。

後比,導入數據到您的收藏,使用Mongoimport

mongoimport --db MY_DATABASE_NAME -c MY_COLLECTION_NAME --type json --file "MY_GEOJSON_FILENAME"

替換上述蒙山您的有效姓名的3個變量。顯然,請確保您的當前目錄包含該文件。

利潤! :)