首页 / MongoDB 入门教程 / 比较运算符

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 小结

比较运算符记住一条规律:值不再是直接写,而是包一层 { 运算符: 值 }。区间就把两个运算符并排写在同一个对象里。