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

Posted

技术标签:

【中文标题】查询三个集合、对它们进行排序和限制的最高效方法?【英文标题】:The most performant way to query against three collections, sort them and limit? 【发布时间】:2013-04-15 12:45:19 【问题描述】:

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

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

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

有没有更好的方法来做到这一点?

【问题讨论】:

这些系列是什么?查询是什么样的? 【参考方案1】:

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

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

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

【讨论】:

以上是关于查询三个集合、对它们进行排序和限制的最高效方法?的主要内容,如果未能解决你的问题,请参考以下文章

你如何告诉 Mongo 在限制结果之前对集合进行排序?

你如何告诉 Mongo 在限制结果之前对集合进行排序?

在C中排序链表[关闭]

LINQ - 按相同功能过滤和排序的最有效方法

使用内连接进行查询的方法,用于更新 X 跳过锁定、排序和限制

查找匹配查询的第一个和最后一个文档?