$skip(跳过文档)
最后更新:2026-10-09
$skip(跳过文档)
$skip 丢弃管道当前顺序的前 N 条文档,其余原样通过,常用于与 $limit 配合实现 offset 加分页。注意跳过文档并不免费:被跳过的文档仍会被读取和丢弃。数据量大时,深分页建议改用基于排序键的范围查询($match 加比较条件)替代。
| 分类 | 核心阶段 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $skip: <正整数> }
⚙️ 参数
| 跳过数量 | 要丢弃的文档条数,必须为非负整数。 |
|---|
返回值:丢弃前 N 条后的文档流
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $skip:第 2 页,每页 10 条
db.articles.aggregate([
{ $sort: { date: -1 } },
{ $skip: 10 },
{ $limit: 10 }
])
运行结果:
// 按日期降序的第 11 到 20 条文章
📌 注意事项
- $skip 不会改变文档顺序
- 大偏移量性能差,适合数据量小的场景
- 深分页建议改用排序键上的 $match 范围查询
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$skip 会利用索引吗?
A不会直接利用索引,被跳过的文档仍会被读取并丢弃。
Q分页用 $skip 有性能问题吗?
A有,页数越深要跳过的文档越多、越慢;大数据集建议用排序键范围查询分页。
Q$skip 可以传 0 吗?
A可以,传 0 表示不跳过任何文档,相当于没有该阶段。