使用sum和sort进行mongodb查询的最佳方法是什么

时间:2012-02-16 11:57:29

标签: java sorting mongodb select sum

所以我将我的一些代码从sql移动到mongodb,并且有一些事情对我来说还不是很清楚。

假设我有以下简单的SQL查询(只是一个例子)

select count(a.id) as count, b_id 
       from table group by b_id 
       where c_id=[SOME ID] 
       group by b_id
       order by count desc;

我认为每个人都明白这是做什么的。

现在使用mongo我可以使用多种方法,在mongo端完成所有操作,获取求和结果并对客户端进行排序,或者只是将原始数据提供给客户端并在那里进行所有处理。

上述查询的最佳方法是什么,在数据库中使用一些内部mongodb机制(mapreduce等)完成所有操作,或者将集合提取到客户端并在那里处理它。数据集通常很大,但如有必要,查询可以分成几个部分。

如果重要,客户端是基于Java的。

2 个答案:

答案 0 :(得分:2)

随着即将到来的MongoDB Aggregation Framework,您可以轻松完成所需的工作。它已在2.1.x开发版本中提供。

如果您坚持使用2.0或更早版本,则必须查看您提及的选项或架构更改,以避免必须首先进行现场聚合。例如,在NoSQL中,随着源数据的操作,使用聚合数据维护字段或文档是很常见的。最常见的示例是将数组的大小保持为字段:

update({..}, {$push:{array:element}, $inc:{elementCount:1})

答案 1 :(得分:1)

您可以使用Map/Reduce在mongo端对数据进行分组,然后在客户端或mongo端对它们进行排序。您还可以找到map / reduce示例here.