我有一个集合,每个文档代表虚拟拍卖。我想找到给定时间段内最常见的商品ID。在SQL中,我SELECT item, COUNT(*) as count
GROUP BY item
和通常的排序和限制。有没有与此相当的mongodb?
答案 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,这将使这项操作更容易。