教程 mongodb tutorial

管道阶段与排序分页

MongoDB 聚合管道由多个阶段组成,每个阶段对数据进行处理并传递给下一个,实现复杂的查询和转换。

管道阶段设计

常见管道阶段包括:

  • $match:筛选符合条件的文档。
  • $sort:对文档进行排序。
  • $skip:跳过指定数量文档,常用于分页。
  • $limit:限制输出文档数量,结合 $skip 实现分页。
  • $project:调整输出字段。

排序与分页示例

假设需要查询按创建时间倒序排序的文章,并实现分页功能:

js
db.articles.aggregate([
  { $match: { status: "published" } },     // 筛选已发布文章
  { $sort: { createdAt: -1 } },            // 按创建时间倒序排序
  { $skip: 20 },                           // 跳过前 20 条(第 3 页,假设每页 10 条)
  { $limit: 10 },                          // 限制返回 10 条数据
  { $project: { title: 1, createdAt: 1 } } // 只返回标题和创建时间
])

`

注意事项

  • 排序字段应建立索引,提升 $sort 性能。
  • 分页时合理设置 $skip 和 $limit,避免大偏移量影响性能。
  • 复杂查询可结合多个管道阶段,灵活处理数据。

通过合理设计聚合管道阶段,结合排序和分页,MongoDB 能高效支持各种复杂查询需求。