MongoDB 入门教程
逻辑运算符
本教程共 50 篇 · 第 15 篇 · 更新于 2026-07-30 · 约 7 分钟阅读
MongoDBMongoDB 入门教程逻辑运算符$or$and$not
15. 逻辑运算符
本节目标:用 $or、$and、$not、$nor 把多个条件组合起来,表达「任一」「全部」「取反」「全否」的逻辑。
15.1 沿用示例数据
本章继续用第 13 章的 users 集合(5 条北京/上海/广州用户)。若已清空,回去重跑那段插入。
15.2 $or:满足任一即可
$or 接收一个条件数组,只要有一个成立就匹配:
// city 是北京,或 age 大于 40
db.users.find({
$or: [
{ city: "北京" },
{ age: { $gt: 40 } }
]
}).pretty()
Tip
$or的多个条件之间默认就是「或」的关系。注意它的值是数组[ ... ],新手常漏掉中括号。
15.3 $and:必须全部满足
多数时候「且」是隐式的——把条件并排写就自动是 AND:
// 隐式 AND:age>=25 且 age<35
db.users.find({ age: { $gte: 25, $lt: 35 } }).pretty()
需要显式 $and 时(比如同一字段要套两种运算,或配合 $not):
// 显式 AND
db.users.find({
$and: [
{ age: { $gte: 25 } },
{ age: { $lt: 35 } }
]
}).pretty()
15.4 $not:对单个条件取反
$not 把紧跟它的那个条件取反,常和运算符搭配:
// age 不小于 30(即 age < 30 的反面)
db.users.find({
age: { $not: { $lt: 30 } }
}).pretty()
Warning
$not只作用于「一个条件」。要否定多个条件,用$nor而不是把$not叠一堆。
15.5 $nor:全都不满足
$nor 是「以上条件一个都不成立」才匹配:
// 既不是北京,也不是上海
db.users.find({
$nor: [
{ city: "北京" },
{ city: "上海" }
]
}).pretty()
对这份数据,结果只剩广州的王芳。
15.6 组合使用示例
逻辑运算符可以嵌套。比如「(北京 或 上海) 且 年龄大于 30」:
db.users.find({
$and: [
{ $or: [ { city: "北京" }, { city: "上海" } ] },
{ age: { $gt: 30 } }
]
}).pretty()
Note据 MongoDB 8.3 官方文档,这些逻辑运算符都接受表达式数组;
$nor在「排除一组成立条件」时比叠加多个$ne更直观。
15.7 小结
- 多条件「且」:默认并排写,或显式
$and。 - 多条件「或」:用
$or,值是数组。 - 单条件取反:
$not。 - 全都不要:
$nor。