找到MongoDB中最常出现的值的最佳方法是什么?

时间:2011-09-13 21:14:43

标签: mongodb

我正在寻找相当于这种SQL查询。

SELECT field, count(*) as counter from table order by counter DESC

实现这一目标的最佳方式是什么?

由于

2 个答案:

答案 0 :(得分:4)

使用Map-Reduce。通过发出键和值1映射每个文档,然后使用简单的reduce操作聚合它们。见http://www.mongodb.org/display/DOCS/MapReduce

答案 1 :(得分:1)

我通过分别跟踪各自的计数来处理聚合查询,即在他们自己的集合中。这样,您就可以简单地查询“最常出现的”集合。缺点:只要数据发生变化,您就需要执行另一次写入。

当然,您也可以使用Map / Reduce不时更新该集合。这取决于信息的准确程度和变化的频率。

但是,请确保不要经常调用Map / Reduce操作:它不是以交互方式使用(即不是在每个页面视图中),而是在离线进程中几乎不会每次更新计数一个小时左右。因此,如果您的计数变化非常快,请使用计数器集合。