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

标签 php mongodb

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

现在假设满足“某些约束”的文档是 10000。

那么,这个查询是首先在内存中获取 10000 个文档并返回 10 个给我,还是只加载 limit 指定的 10 个文档?

最佳答案

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

在服务器端,将读取所有与您的 find() 约束相匹配的文档,这意味着如果它们尚未在内存中,操作系统会将它们从磁盘放入内存中。但话又说回来,从 MongoDB 服务器进程来看,所有文档无论如何都始终在内存中;由操作系统来对此进行缓存,并在磁盘之间进行分页。在 their docs 阅读更多关于 MongoDB 如何管理内存的信息.

关于php - MongoDB Limit() 是否加载内存中的所有文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10862109/

相关文章:

php - 显示来自用阿拉伯语编写的 mysql 的数据

node.js - Mongoose find().or 挂起

node.js - 如何将新元素推送到子文档中“发布”>“评论”>“回复”>“喜欢”作为数组

php - 警告 : exec() has been disabled for security reasons

javascript - PHP 到 Javascript 多维数组

php - 优化 Codeigniter 查询

php - ZF2 身份验证 session 存储在 memcached 中

javascript - MongoDB:跨 2 个数据库的 $lookup

mongodb - 我如何在 NESTJS 中设置 Multi-Tenancy

java - 在 mongo 中插入记录时出现重复键错误索引