定义
$limit限制传递至管道下一阶段的文档数量。
兼容性
可以使用 $limit 查找托管在以下环境中的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
$limit 阶段具有以下原型形式:
{ $limit: <positive 64-bit integer> }
$limit 取一个正整数,用于指定传递的最大文档数量。
注意
从 MongoDB 5.0 开始,$limit 管道聚合有 64 位整数限制。传递给管道的值如果超过此限制,将返回无效参数错误。
行为
在排序结果中使用 $limit
如果将 $limit 阶段与以下任何一项一起使用:
$sort聚合阶段,sort()方法,或findAndModify命令或findAndModify()shell 方法中的sort字段,
在将结果传递到 $limit 阶段之前,请务必在排序中至少包含一个包含唯一值的字段。
对包含重复值的字段进行排序时,可能会在多次执行中对这些重复字段返回不一致的排序顺序,尤其是当集合正在接收写入时。
为确保排序一致,最简单方法是在排序查询中纳入 _id 字段。
点击以下链接,详细了解每项内容:
示例
本页上的示例使用 sample_mflix示例数据集 中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载示例数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。
考虑以下示例:
db.movies.aggregate([ { $limit : 5 } ])
此操作仅返回管道传递给它的前 5 个文档。$limit 对其传递的文档内容没有影响。
要使用MongoDB .NET/ C#驱动程序将 $limit 阶段添加到聚合管道,请对 PipelineDefinition对象调用 Limit() 方法。
以下示例创建了一个管道阶段,将返回的文档数量限制为 10:
var pipeline = new EmptyPipelineDefinition<BsonDocument>() .Limit(10);
要使用MongoDB Node.js驱动程序将 $limit 阶段添加到聚合管道,请在管道对象中使用 $limit操作符。
以下示例创建了一个管道阶段,从而将返回的文档数量限制为 10 个。然后,示例运行聚合管道:
const pipeline = [{ $limit: 10 }]; const cursor = collection.aggregate(pipeline); return cursor;