MongoDB中的其他运算符以及相关查询操作

一、数据类型与存在性运算符

  1. $type 类型匹配
    功能:筛选指定字段为特定数据类型的文档
    支持类型
    ◦ 数值型(number/double/int)、字符串(string)、布尔(bool
    ◦ 对象(object)、数组(array)、日期(date)等
    示例

    // 查询 age 字段为字符串类型的文档
    db.users.find({"age": {$type: "string"}})
    
  2. $exists 字段存在性检测
    用途:过滤包含/不包含指定字段的文档
    注意:空值字段 null 会被认为存在
    示例

    // 查找有 child 字段的家长数据
    db.users.find({"child": {$exists: true}})
    

二、正则与数学运算符

  1. $regex 正则表达式
    语法:支持两种写法(等效)

    db.users.find({"mobile": /^133\d{8}$/})  // 直接使用正则对象
    db.users.find({"mobile": {$regex: /^133/, $options: "i"}}) // 带修饰符
    

    修饰符
    i(不区分大小写)、m(多行匹配)、x(忽略空白)
    性能建议:避免前导通配符(如/^.../更高效)

  2. $mod 取模运算
    限制:仅对数值类型字段有效,字符串类型自动忽略
    示例

    // 查找年龄能被3整除的用户(数值型age)
    db.users.find({"age": {$mod: [3, 0]}})
    

三、自定义条件与复杂查询

  1. $where 自定义函数
    功能:通过 JavaScript 函数实现复杂逻辑
    警告:因需调用 JS 引擎,性能较差,应优先使用原生操作符
    示例
    // 查找年龄>33且子年龄<4的家长(低效方式)
    db.users.find({$where: "this.age>33 && this.child.age<4"})
    

四、结果控制与格式化

  1. 排序 sort()
    语法1 升序,-1 降序,支持多字段排序
    示例

    db.users.find().sort({age: -1, sex: 1})  // 年龄降序,性别升序
    
  2. 字段投影(Projection)
    规则1 显示字段,0 隐藏字段,_id 默认显示需显式排除
    示例

    // 仅返回name和mobile字段,隐藏_id
    db.users.find({}, {name: 1, mobile: 1, _id: 0})
    
  3. 分页控制 limit() & skip()
    用途:实现分页查询(需配合排序保证结果稳定)
    示例

    // 获取第2页数据(每页5条)
    db.users.find().sort({age:1}).skip(5).limit(5)
    
posted @ 2025-03-26 21:42  千陌666  阅读(20)  评论(0)    收藏  举报