在我的數據庫中,我有上百萬的文件。他們每個人都有時間戳。有些人有相同的時間戳。我想得到一些點(幾百或幾千甚至更多)來繪製一個圖。我不想要所有的觀點。我希望每拿n分我拿1分。我知道有聚合框架,我嘗試過。這是因爲我的數據很大。當我做聚合工作時,結果超過文檔最大尺寸,容易16MB。在mongodb中還有一個名爲skip的函數,但它只跳過前n個文檔。有沒有很好的方法來實現我想要的?或者有辦法讓聚合結果更大?提前致謝!MongoDB中獲取數百個數據出數以百萬計的數據
2
A
回答
1
我不知道你怎麼可與A/F或M/R做到這一點 - 只要跳過讓您有(FE)各10點是不是M/R允許你這樣做,除非你選擇每個點基於一個10%變化的隨機值......這可能不是你想要的。但這並工作:
db.so.output.drop();
db.so.find().count();
map = function() {
// rand does 0-1, so < 0.1 means 10%
if (Math.random() < 0.1) {
emit(this._id, this);
}
}
reduce = function(key, values) {
return values;
}
db.so.mapReduce(map, reduce, { out: 'output' });
db.output.find();
,輸出的東西線:
{
"result" : "output",
"timeMillis" : 4,
"counts" : {
"input" : 23,
"emit" : 3,
"reduce" : 0,
"output" : 3
},
"ok" : 1,
}
> db.output.find();
{ "_id" : ObjectId("51ffc4bc16473d7b84172d85"), "value" : { "_id" : ObjectId("51ffc4bc16473d7b84172d85"), "date" : ISODate("2013-08-05T15:24:45Z") } }
{ "_id" : ObjectId("51ffc75316473d7b84172d8e"), "value" : { "_id" : ObjectId("51ffc75316473d7b84172d8e") } }
{ "_id" : ObjectId("51ffc75316473d7b84172d8f"), "value" : { "_id" : ObjectId("51ffc75316473d7b84172d8f") } }
或:
> db.so.mapReduce(map, reduce, { out: 'output' });
{
"result" : "output",
"timeMillis" : 19,
"counts" : {
"input" : 23,
"emit" : 2,
"reduce" : 0,
"output" : 2
},
"ok" : 1,
}
> db.output.find();
{ "_id" : ObjectId("51ffc4bc16473d7b84172d83"), "value" : { "_id" : ObjectId("51ffc4bc16473d7b84172d83"), "date" : ISODate("2013-08-05T15:24:25Z") } }
{ "_id" : ObjectId("51ffc4bc16473d7b84172d86"), "value" : { "_id" : ObjectId("51ffc4bc16473d7b84172d86"), "date" : ISODate("2013-08-05T15:25:15Z") } }
根據隨機因素。
+0
這看起來不是一個很好的解決方法,可以選擇「n」個點(因爲它實際上是隨機結果)。 – WiredPrairie
+0
但它是一個有趣的想法。謝謝! – user1849043
相關問題
- 1. jquery.animateNumber出數以百萬計
- 2. python - 生成數百萬個json數據
- 3. 合併數以百萬計的數據的NodeJS
- 4. MongoDB數百萬行數很慢
- 5. 哪個數據庫,我應該更喜歡應用以百萬計的數據
- 6. 如何使用nodejs獲取/計數mongodb中的數百萬條記錄
- 7. 從laravel中的數組中搜索數以百萬計的數據
- 8. 增加數以百萬計的記錄
- 9. 格式數以百萬計的
- 10. 需要數以百萬計的行
- 11. 以小時爲單位從couchdb獲取數百萬個對象的數據
- 12. 如何獲得一百萬行的數據範圍數據集
- 13. Python數據抓取的差異化 - 數以百萬計的人與
- 14. 將多行數以百萬計
- 15. 數百個表的數據庫設計
- 16. 分析使用MongoDB的 - 數百萬次
- 17. 查詢大(以百萬計)數據的速度更快
- 18. 百萬數據點分組緩慢
- 19. 在數據表中獲取百分比
- 20. 獲得百萬個用戶喜歡的數據
- 21. 從另一個表中插入數以百萬計的行
- 22. 將數以百萬計的高維數據集羣化爲集羣
- 23. 添加數以百萬計的定點數
- 24. 數百萬行的GUI
- 25. 比較不同數據庫中的數百萬條記錄
- 26. 在SQL Server中清除數百萬數據的最佳方法
- 27. 處理MySQL和PHP/Laravel中的數百萬條數據記錄
- 28. 哪個更快? 1百萬行數組或數據庫?
- 29. SQLAlchemy無效插入數百萬個數據
- 30. 無法在數百萬個數據上運行mongo shell腳本
我沒有在很長一段時間使用蒙戈,但不能運行地圖減少和輸出漏斗一個或多個臨時集合? – JohnP
感謝您的回覆。我認爲mapreduce將會過慢,儘管它與聚合組具有相同的效果。 – user1849043
爲了克服16MB的限制,M/R是很長的路要走。如果速度太慢,檢查的唯一方法就是測量它。如果你的收藏會變得非常大,那麼考慮'sharding'。在這種情況下,M/R作業將被自動分配到每個分片並行。 –