mongodb - 查询三个集合、对它们进行排序和限制的最高效方法?

标签 mongodb database

我需要查询 3 个不同的集合。

然后我需要对收集结果进行排序(每个基于不同的字段和顺序,但每次都是 DateTime 值),然后最后限制我想要的结果数量(在我的例子中是 10 个)。

目前我只是在做三个独立的查询,每个查询限制为 10,然后根据它们的日期时间手动排序。然后我自己最终限制在 10 个。

有更好的方法吗?

最佳答案

由于 mongodb 不是可以在一个查询中连接多个表的关系数据库,所以不是。我什至不确定您是否可以为关系 DBMS 进行这种排序(使每个字段的顺序优先级相等)。

您正在做的事情听起来已经很不错了。您可以改进对这 3 个结果的排序。如果前 10 个元素中没有其他元素,则提前中止以迭代一个或多个集合。您可以相应地修改查询以仅返回其他两个集合的文档,其日期低于最后一个(第 10 个)第一个查询的集合。但也许你已经这样做了......

在谈论性能时,您可能会考虑在这些用于查询的日期时间字段上添加索引,以保持这些字段在内存中预排序。

关于mongodb - 查询三个集合、对它们进行排序和限制的最高效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015477/

相关文章:

json - 我可以使用基于 noSQL 文档来存储 json 对象吗?

php - phpMyadmin 中的最大执行时间

javascript - 如何通过键从 MongoDB 集合中删除字段?

node.js - Mongoose 使用 presave 中间件推送到数组

mongodb - Native Mongo Query Doctrine ODM

ruby-on-rails - delete_all vs destroy_all?

python - Django 模型 : Use multiple values as a key?

mongodb - 使用字符串或 ObjectId 构造 DBRef

node.js - 为什么我不能使用相关 mongo 文档中的 id 在 GridFS 上设置 id

sql - 在 PL/SQL 中连接 CLOB 以立即执行