MongoDB中的其他运算符以及相关查询操作
一、数据类型与存在性运算符
- 
$type类型匹配
• 功能:筛选指定字段为特定数据类型的文档
• 支持类型:
◦ 数值型(number/double/int)、字符串(string)、布尔(bool)
◦ 对象(object)、数组(array)、日期(date)等
• 示例:// 查询 age 字段为字符串类型的文档 db.users.find({"age": {$type: "string"}}) - 
$exists字段存在性检测
• 用途:过滤包含/不包含指定字段的文档
• 注意:空值字段null会被认为存在
• 示例:// 查找有 child 字段的家长数据 db.users.find({"child": {$exists: true}}) 
二、正则与数学运算符
- 
$regex正则表达式
• 语法:支持两种写法(等效)db.users.find({"mobile": /^133\d{8}$/}) // 直接使用正则对象 db.users.find({"mobile": {$regex: /^133/, $options: "i"}}) // 带修饰符• 修饰符:
◦i(不区分大小写)、m(多行匹配)、x(忽略空白)
• 性能建议:避免前导通配符(如/^.../更高效) - 
$mod取模运算
• 限制:仅对数值类型字段有效,字符串类型自动忽略
• 示例:// 查找年龄能被3整除的用户(数值型age) db.users.find({"age": {$mod: [3, 0]}}) 
三、自定义条件与复杂查询
$where自定义函数
• 功能:通过 JavaScript 函数实现复杂逻辑
• 警告:因需调用 JS 引擎,性能较差,应优先使用原生操作符
• 示例:// 查找年龄>33且子年龄<4的家长(低效方式) db.users.find({$where: "this.age>33 && this.child.age<4"})
四、结果控制与格式化
- 
排序
sort()
• 语法:1升序,-1降序,支持多字段排序
• 示例:db.users.find().sort({age: -1, sex: 1}) // 年龄降序,性别升序 - 
字段投影(Projection)
• 规则:1显示字段,0隐藏字段,_id默认显示需显式排除
• 示例:// 仅返回name和mobile字段,隐藏_id db.users.find({}, {name: 1, mobile: 1, _id: 0}) - 
分页控制
limit()&skip()
• 用途:实现分页查询(需配合排序保证结果稳定)
• 示例:// 获取第2页数据(每页5条) db.users.find().sort({age:1}).skip(5).limit(5) 
                    
                
                
            
        
浙公网安备 33010602011771号