2014-02-23 46 views
0

我已經構建了一個偉大的地圖減少和我的數據完美出來。我唯一的問題是地圖減少了每次加載頁面時在每個用戶中創建集合。這是地圖減少的正常用法,還是應該使用cron在後臺運行一次,或者以其他方式生成內容,然後每次都加載它。Mapreduce使用

+0

你使用什麼驅動程序來編寫什麼編程語言? – Philipp

+0

你的用例是什麼?您是否需要**每個請求**不同的結果?你能創建一個可以使用的「總計」集合嗎?你的問題對於任何明確的答案來說太寬泛了。除此之外,別的只是猜測,除非你可以在你的問題中提供更多細節。 –

回答

0

MapReduce的常見用例是將其作爲後臺作業運行,以創建報表或爲以後的查詢緩存聚合和/或轉換後的數據。所以默認行爲是將數據寫入新的集合。

但MapReduce也有一個選項可以直接給你輸出。當您在mongo shell中執行MapReduce命令時,可以通過傳遞一個對象{ inline: 1 }作爲out:參數來完成此操作。這裏有一個例子:

db.runCommand(
      { 
      mapReduce: 'source_collection', 
      map: mapFunction, 
      reduce: reduceFunction, 
      out: { inline: 1 } 
      } 

你沒有說你使用的數據庫驅動程序,所以只能奉勸一句能給你是指它的文檔,以找出是否和如何公開此功能。

請記住,aggregation pipeline可以涵蓋除內聯MapReduce最難以理解的用例之外的所有內容,其性能通常較高,代碼通常更具可讀性。