2010-10-03 44 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