2015-02-24 97 views
-1

我有兩個集合,LogData和OptData。 LogData只有600條記錄,而OptData有大約300萬條記錄。爲了創建一些邏輯數據,我試圖合併兩個收集器。但只需使用mongo命令進行合併即可創建大小超過16 MB的文檔。在GridFs(MongoDb)中創建文件

我可以使用GridF合併文件嗎?

我的收藏就像

LogData 
[{ 
    "SId": 10, 
    "NoOfDaya" : 9 
    } 
{ 
"SId": 11, 
"NoOfDaya" : 8 
}] 



OptData 
[ { 
    "SId": 10, 
    "CId": 12 
    } 

{ 
"SId": 10, 
"CId": 13 
    }] 

我想是這樣

LogData 
[{ 
    "SId": 10, 
    "NoOfDaya" : 9 
    "OptData" : [{ 
     "CId": 12 
    },{ 
    "CId": 13 
    } 
    ] 
    } 
    { 
     "SId": 11, 
    "NoOfDaya" : 8, 
    "OptData" : [] 
}] 

我能夠使用MongoDB的find命令要做到這一點,但它創建的文檔尺寸大於16個mb.Is可能使用mongodb GridFS來做到這一點?

+0

無論你在做什麼,如果你的文檔甚至遠遠接近16MB的大小限制,你幾乎可以肯定是做錯了。不,您不能將大量的結構化文檔保存爲文件,並期望它們現在就好像它們不是文件一樣。 GridFS只是一個簡單的方法來組合'byte []'數據。 – mnemosyn 2015-02-24 14:38:24

回答

1

您可以嘗試將整個文檔存儲爲GridF上JSON或BSON二進制字符串的文本字符串,但這可能不是您想要的,因爲當您在GridFS中存儲數據時,MongoDB將它視爲一個無意義的blob數據並且不能對其執行任何有用的查詢。

現在將數據標準化爲兩個集合會更好。當這給你造成一個特定的問題時,你可以在一個新問題中描述這個問題。我們可能會建議你一個更實用的解決方案。

+0

在當前場景中,我有兩個集合。 Collection1是OptData(它擁有約9000萬條記錄)。 Collection2 LogData(它只有600條記錄)。我們會根據一些計算定期更新LogData。這裏的問題是,由於mongoDB不允許,我不能在這裏應用連接。自記錄超過16 MB以來,我無法合併兩個集合。 – sangita 2015-02-25 05:36:21

+0

@sangita這個問題太複雜了,無法通過評論來解決。請創建一個新問題並準確解釋您需要執行哪些查詢。 – Philipp 2015-02-25 08:14:20

+0

我已經創建了另一個問題[鏈接](http://stackoverflow.com/questions/28714773/map-reduce-to-combine-data-mongodb)。讓我知道是否有任何事情仍然不清楚。 – sangita 2015-02-25 08:56:27