Definition 定义
跳过进入该 stage 的指定数量的文档,并将剩余的文档传递给 pipeline 中的下一个 stage。
$skip stage的原型形式如下:
{ $skip: <positive 64-bit integer> }
$skip 需要一个大于或等于 0 的整数,用于指定要跳过的最大文档数量。
NOTE 从 MongoDB 5.0 开始,$skip pipeline aggregation 有一个64位的整数限制。传递给管道的值如果超过这个限制,将返回一个无效的参数错误。
Behavior 行为
Use $skip with Sorted Results 对排序结果使用 $skip
如果将 $skip stage 与以下任何一项一起使用:
- $sort aggregation stage,
- sort() 方法,或
- findAndModify 命令或 findAndModify() shell 方法的
sort
字段,
在将结果传递到 $skip stage 之前,请确保在你的排序中至少包含一个包含唯一值的字段。
对包含重复值的字段进行排序,可能会在多次执行中为这些重复的字段返回不同的排序顺序,特别是当集合正在积极接收写入时。
保证排序一致性(guarantee sort consistency)的最简单方法是在你的排序查询中包括 _id
字段。
更多信息请看下面的内容:
- Consistent sorting with $sort (aggregation) 用 $sort(aggregation) 进行一致的排序
- Consistent sorting with the sort() shell method 用 sort() shell 方法进行一致的排序
- Consistent sorting with the findAndModify command 用 findAndModify 命令进行一致的排序
- Consistent sorting with the findAndModify() shell method 用 findAndModify() shell 方法进行一致的排序
Example 例子
考虑以下例子:
这个operation 跳过 pipeline 传递给它的前 5 个文档。$skip 对它沿着管道传递的文档的内容没有影响。db.article.aggregate([
{ $skip : 5 }
]);
TIP 参阅:
- Aggregation with the Zip Code Data Set 用邮编数据集进行 aggregation
- Aggregation with User Preference Data 用用户偏好数据进行 aggregation
参考
https://docs.mongodb.com/manual/reference/operator/aggregation/skip