MongoDB Limit()是否加载内存中的所有文档?

时间:2012-06-02 11:53:57

标签: php mongodb

$result = $collection->find('some constraints')->limit(10);

现在假设满足“一些约束”的文件是10000.

那么,这个查询首先在内存中获取10000个文档并向我返回10或者只加载由limit指定的10个文档吗?

1 个答案:

答案 0 :(得分:5)

我最近写了article这个。简而言之,当您使用限制时,驱动程序将仅从服务器请求10个项目,因此在客户端,内存中将不超过10个文档。 “limit”严格来说是 client 的东西,仅在获取文档时使用。查询仍将完整运行。

在服务器端,将读取与find()约束匹配的所有文档,这意味着操作系统会将这些文件从磁盘放入内存(如果它们尚未在内存中)。但话说回来,从MongoDB服务器进程来看,所有文档总是在内存中;它是操作系统进行缓存,以及从磁盘进行分页。阅读更多有关MongoDB如何在their docs管理内存的信息。