我一直在寻找如何从MongoDB集合中获取最大价值的方法,而且我发现大多数人都推荐 to sort first, and then get the first one from the result 。
通常,排序需要O(NlogN)时间,但是如果我要排序的字段已被索引,则应该花费更少的时间。
所以我的问题是,
答案 0 :(得分:0)
正如我在标题中所写,MongoDB的sort()是否在O(1)时间内运行?
不,MongoDB Documentation都没有提及。
如果没有,MongoDB是否提供一种获取最大值的更快方法?
不,尽管还有另一种使用$max
来使用聚合管道的方法,但是它的性能不如$sort + $limit
。引用文档
$ sort + $ limit内存优化:
当$ sort在$ limit之前并且 没有干预阶段可以修改文档数量, 优化程序可以将$ limit合并到$ sort中。这允许 $ sort操作仅在进行时保持前n个结果, 其中n是指定的限制,并确保MongoDB仅需要 在内存中存储n个项目。