MongoDB 入门教程
比较运算符
本教程共 50 篇 · 第 14 篇 · 更新于 2026-07-30 · 约 8 分钟阅读
MongoDBMongoDB 入门教程比较运算符$gt$in$ne
14. 比较运算符
本节目标:用 $gt/$gte/$lt/$lte 做大小与区间查询,用 $ne 排除某值,用 $in/$nin 一次匹配多个候选值。
14.1 运算符总览
比较类运算符都写在「字段: { 运算符: 值 }」里:
| 运算符 | 含义 | 例子 |
|---|---|---|
$gt | 大于 | { age: { $gt: 30 } } |
$gte | 大于等于 | { age: { $gte: 30 } } |
$lt | 小于 | { age: { $lt: 30 } } |
$lte | 小于等于 | { age: { $lte: 30 } } |
$ne | 不等于 | { city: { $ne: "北京" } } |
$in | 在列表中 | { city: { $in: ["北京","上海"] } } |
$nin | 不在列表中 | { city: { $nin: ["北京"] } } |
14.2 大于与大于等于
沿用第 13 章的 users 集合。查年龄大于 30 的:
// age > 30
db.users.find({ age: { $gt: 30 } }).pretty()
查年龄大于等于 30,把 gt 换成 gte:
// age >= 30
db.users.find({ age: { $gte: 30 } }).pretty()
Tip
$gte/$lte这类带e的是「含边界」的。要「含 30」就用gte,别漏了e把边界丢掉。
14.3 小于与小于等于
同理,查年龄小于 30:
// age < 30
db.users.find({ age: { $lt: 30 } }).pretty()
14.4 区间查询
大小运算符能组合,表示一段范围:
// 25 <= age < 35
db.users.find({
age: { $gte: 25, $lt: 35 }
}).pretty()
两个条件写在同一对 { } 里,是「且(AND)」关系,后面逻辑运算符章节会展开。
14.5 不等于 $ne
$ne 排除某个具体值:
// city 不是 "北京" 的用户
db.users.find({ city: { $ne: "北京" } }).pretty()
Warning
$ne也会匹配「字段不存在」的文档。如果你只想排除有值但不等于某值的,需要再叠加$exists,见下一章。
14.6 在列表中 $in
一次匹配多个候选值,用 $in 比写多个 $eq 清爽:
// city 是 北京 或 上海
db.users.find({ city: { $in: ["北京", "上海"] } }).pretty()
14.7 不在列表中 $nin
反过来,$nin 排除一列表里的值:
// city 不是 北京(注意 $nin 也会匹配字段缺失的文档,见 14.5 的说明)
db.users.find({ city: { $nin: ["北京"] } }).pretty()
Note据 MongoDB 8.3 官方文档,
$in/$nin的数组里也可以放正则表达式等元素,不只是普通值,用法比看上去更灵活。
14.8 小结
比较运算符记住一条规律:值不再是直接写,而是包一层 { 运算符: 值 }。区间就把两个运算符并排写在同一个对象里。