2010-10-03 46 views
2

如何限制在MongoDB中使用group()時的結果數量? 基本上我找這MySQL查詢相當於:MongoDB中限制組()的結果

SELECT * FROM items GROUP BY type LIMIT 5;

編輯:我才意識到這是可以用的Map/Reduce做,但我閱讀,使用地圖/減少對單一服務器(我的情況)有點矯枉過正。這是真的嗎?最終,實現我所需要的最好方法是什麼?

回答

5

組的問題是它不會真的這樣做。它只是返回所有組的數組。

您可以使用地圖/減少來解決這個問題:

  1. 印發的Map/Reduce(到一個臨時或永久收藏)
  2. 對集合執行找到一個.limit( 5)在返回的遊標上

在單個服務器上映射/減少對MongoDB並不是過分。但是,您正在進行「速度/空間」權衡。理論上你可以在每次需要這些數據時運行一個臨時的map-reduce。但是,如果您經常這樣做,則可能需要計劃map-reduce並將商店查詢爲map-reduce不便宜。

+0

我必須在每一頁上加載它,這可能是「很多」,我猜。所以基本上從我的理解來看,實時獲取這些數據太昂貴了。我必須設置一個cron作業來定期運行Map/Reduce嗎? – pt2ph8 2010-10-04 06:57:21

+0

MongoDB中的MapReduce不是很快。 – TTT 2010-10-04 19:36:21

+0

是的,每個頁面加載太頻繁。你一定要爲M/R安排一個cron。 – 2010-10-05 14:50:12