分页查询

基本语法

db.collection.find({查询条件})
           .sort({排序字段: 排序方式})
           .skip(跳过的行数)
           .limit(每页条数)

参数说明

  • 排序方式:1 表示升序,-1 表示降序
  • 跳过行数:计算公式为 (页码-1) * 每页条数
  • 限制条数:指定每页返回的文档数量

性能优化

  1. 避免在大数据集上使用大数值 skip(),会影响性能
  2. 替代方案:使用范围查询(如 _id > last_id)配合 limit() 实现分页
  3. 为排序字段添加索引提高查询效率

数据更新

db.collection.update(
  <query>,
  <update>,
  {
    upsert: <boolean>,
    multi: <boolean>
  }
)

更新操作符

  • $set:设置字段值
  • $unset:删除字段
  • $inc:增加字段值
  • $push:向数组添加元素

WriteConcern 写入机制

{
  w: <value>,
  j: <boolean>,
  wtimeout: <number>
}

w 参数

  • w=1(默认):要求得到主节点确认
  • w=0:“fire and forget” 模式
  • w=majority:要求写入多数节点

j 参数

  • j=true:要求数据写入磁盘 journal 日志后才返回确认

wtimeout 参数

  • 设置超时时间(毫秒),超过则返回错误

数据删除

db.collection.remove(
  <query>,
  {
    justOne: <boolean>
  }
)