我需要查询 3 个不同的集合。
然后我需要对收集结果进行排序(每个基于不同的字段和顺序,但每次都是 DateTime 值),然后最后限制我想要的结果数量(在我的例子中是 10 个)。
目前我只是在做三个独立的查询,每个查询限制为 10,然后根据它们的日期时间手动排序。然后我自己最终限制在 10 个。
有更好的方法吗?
最佳答案
由于 mongodb 不是可以在一个查询中连接多个表的关系数据库,所以不是。我什至不确定您是否可以为关系 DBMS 进行这种排序(使每个字段的顺序优先级相等)。
您正在做的事情听起来已经很不错了。您可以改进对这 3 个结果的排序。如果前 10 个元素中没有其他元素,则提前中止以迭代一个或多个集合。您可以相应地修改查询以仅返回其他两个集合的文档,其日期低于最后一个(第 10 个)第一个查询的集合。但也许你已经这样做了......
在谈论性能时,您可能会考虑在这些用于查询的日期时间字段上添加索引,以保持这些字段在内存中预排序。
关于mongodb - 查询三个集合、对它们进行排序和限制的最高效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015477/