我需要查询3个不同的集合。
然后我需要对集合结果进行排序(每个结果基于不同的字段和顺序,但每次都是DateTime值),然后最终限制我想要的结果数量(在我的情况下为10)。
目前我只是做三个单独的查询并将每个查询限制为10,然后根据它们的日期时间手动排序。然后我最终限制为10岁。
有更好的方法吗?
答案 0 :(得分:3)
由于mongodb不是关系数据库,你可以在一个查询中连接多个表,没有。我甚至不确定你是否可以为关系型DBMS做这种排序(让每个字段在顺序优先级上相等)。
你所做的一切听起来真的很棒。您可以改进这3个结果的排序。如果没有其他元素可以在整个顶部10中,则可以提前中止迭代一个或多个集合。您可以相应地修改您的查询,只返回其他两个集合的文档,其日期低于最后一个(第10个)的集合。首先查询收集。但也许你已经这样做了......
在谈论性能时,您可以考虑在用于查询的这些日期时间字段中添加索引,以使字段在内存中保持预先排序。