MongoDB 入门教程
查询基础
本教程共 50 篇 · 第 13 篇 · 更新于 2026-07-30 · 约 7 分钟阅读
MongoDBMongoDB 入门教程find查询条件隐式eqpretty
13. 查询基础
本节目标:学会用 find() 查数据,理解「查询条件就是文档」,以及等于比较在 MongoDB 里是默认的隐式行为。
13.1 先准备示例数据
本查询章节统一用这个 users 集合,先建好它:
db.users.insertMany([
{ _id: 1, name: "张伟", age: 28, city: "北京", tags: ["vip", "gamer"], email: "zw@ex.com" },
{ _id: 2, name: "李娜", age: 34, city: "上海", tags: ["new"], email: "ln@ex.com" },
{ _id: 3, name: "王芳", age: 22, city: "广州", tags: ["new", "vip"], email: "wf@ex.com" },
{ _id: 4, name: "陈强", age: 45, city: "北京", tags: ["vip"], email: "cq@ex.com" },
{ _id: 5, name: "刘洋", age: 30, city: "上海", tags: ["gamer"], email: "ly@ex.com" }
])
后面 14–16 章都沿用这份数据。若已清空,重新执行上面这段即可。
13.2 find() 查全部
find() 不带参数,返回集合里所有文档:
// 查全部
db.users.find()
结果默认一行压一封,长篇文档看着累。加 pretty() 格式化:
// 美化输出
db.users.find().pretty()
Tip终端里我几乎每次都加
pretty()。内嵌文档一多,不加它根本没法读。
13.3 查询条件就是文档
这是 MongoDB 查询最核心的一点:过滤条件本身就是一个文档,写法和数据文档一模一样。
// 查 city 等于 "北京" 的用户
db.users.find({ city: "北京" })
这里 { city: "北京" } 就是一个「条件文档」。它读起来像在说:找出 city 字段等于北京的那些。
13.4 等于是隐式的
上面没写任何运算符,因为「等于」是默认的隐式行为:
// 这两句完全等价:age 等于 28
db.users.find({ age: 28 })
db.users.find({ age: { $eq: 28 } })
$eq 是显式写法。大多数时候用隐式就够了,代码更短。
13.5 什么时候用显式 $eq
隐式写法在「顶层字段」很好用,但碰到嵌套或数组时要靠运算符:
// 内嵌文档里用 $eq 更清晰
db.users.find({ "address.city": { $eq: "北京" } })
另外在「和别的条件组合」「和 $not 取反」时,也得显式写出来(见逻辑运算符章节)。
13.6 findOne 查一条
只想要第一条匹配,用 findOne:
// 返回第一条 age=30 的文档(不是游标)
db.users.findOne({ age: 30 })
Warning
find()返回的是游标(cursor),可以接着.limit()、.sort();findOne()直接返回文档对象。新手常把两者混用导致报错。
13.7 小结
查询的三件事记住就好:
- 条件是个文档,字段值写为谁就是「等于谁」。
- 等于是隐式默认,大多数情况不用写
$eq。 pretty()让输出可读,查询练习时加上它。