mongodb:按出现次数排序的字段

时间:2012-07-06 23:04:56

标签: mongodb

我有一个集合,每个文档代表虚拟拍卖。我想找到给定时间段内最常见的商品ID。在SQL中,我SELECT item, COUNT(*) as count GROUP BY item和通常的排序和限制。有没有与此相当的mongodb?

2 个答案:

答案 0 :(得分:2)

MongoDB有几种选择。

每个选项都有不同的语法和不同的速度。

在任何这些情况下,您可能会发现这些选项相对较慢。 Map / Reduce作业旨在“离线”运行,通常作为“cron作业”或“计划任务”。请注意,如果您计划大量执行此操作,则可能需要预先汇总此数据。

答案 1 :(得分:0)

或者您可以使用MapReduce然后对输出集合进行排序,或者您可以使用命令group,但您需要在客户端执行大部分排序和限制。

组命令示例:

db.coll.group(
       {key: { a:true, b:true },
        cond: { active:1 },
        reduce: function(obj,prev) { prev.csum += obj.c; },
        initial: { csum: 0 }
        });

值得一提的是,在mongodb(2.2)的下一个稳定版本中,他们将发布一个新的aggregation framework,这将使这项操作更容易。