java - 使用求和和排序进行 mongodb 查询的最佳方法是什么

标签 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 的。

最佳答案

随着即将到来的MongoDB Aggregation Framework做你需要做的事情非常容易。它已在 2.1.x 开发版本中提供。

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

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

关于java - 使用求和和排序进行 mongodb 查询的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9310879/

相关文章:

java - Weblogic、JVM 和 EAR

java - SearchContextMissingException 无法执行提取阶段 [search/phase/fetch/id]

java - Android 并在剩余可用堆空间的情况下运行 OOM

python - 如何先按递减值排序,然后按第二个值递增排序

python - 组合列表中的项目

javascript - Mongoose 自定义密码验证

java - 如何读取 Java 中的数字密码?

ios - Swift 2.0 按属性对对象数组进行排序

javascript - Mongoose一对多关系问题

node.js - 在 keystone.js 管理 UI 中显示其他模型(集合)的字段?