所以我将一些代码从 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/