cursor.limit()
定义
cursor.limit()
重要
mongosh 方法
本页面提供
mongosh
方法的相关信息。这不是特定于语言的驱动程序(例如 Node.js)的文档。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
在游标上使用
limit()
方法,可以指定游标返回的文档的最大数量。limit()
类似于 SQL 数据库中的LIMIT
语句。注意
在从数据库检索任何文档之前,必须对游标应用
limit()
。使用
limit()
可最大限度地提高性能,并防止 MongoDB 返回的结果超过处理所需的数量。limit()
方法具有以下原型形式:db.collection.find(<query>).limit(<number>)
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
行为
支持的值
limit()
的行为对于小于 -2 31 和大于 2 31 的值没有定义。
必须为 limit()
指定一个数值。
零值
负值
负限值与正限值相似,但在返回单个批次结果后将关闭游标。因此,对于负限值,如果有限的结果集不适合单个批次,则收到的文档数量将小于指定的限值。通过传递负限值,客户端可向服务器表明它不会通过 getMore
请求后续批次。
将 limit()
与 sort()
一起使用
如果将 limit()
和 sort()
一起使用,请务必在排序中至少包含一个包括唯一值的字段,然后再将结果传递给 limit()
。
对包含重复值的字段进行排序时,可能会在多次执行中对这些重复字段返回不一致的排序顺序,尤其是当集合正在接收写入时。
为确保排序一致,最简单方法是在排序查询中纳入 _id
字段。
有关更多信息,请参阅使用 sort() 方法进行一致排序。
将 limit()
与 skip()
一起使用
当您链接 skip()
和 limit()
时,方法链接顺序不会影响结果。服务器始终会根据排序顺序应用跳过操作,然后再应用对返回文档数量的限制。
以下代码示例展示了 skip()
和 limit()
的不同链接顺序,它们对同一数据集总是产生相同的查询结果:
db.myColl.find().sort({_id: 1}).skip(3).limit(6); db.myColl.find().sort({_id: 1}).limit(6).skip(3);