find()(查询文档)
最后更新:2026-10-09
find()(查询文档)
find() 查询集合中匹配条件的文档,返回一个游标(Cursor)。它是最基础的读取方法:第一个参数是查询条件,第二个参数是投影(控制返回哪些字段)。游标默认惰性——真正数据在遍历(toArray/forEach/next)时才从服务器拉取。
| 分类 | 读取 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
db.<集合>.find(<查询条件>, <投影>)
⚙️ 参数
| 查询条件 | 匹配文档的条件对象,支持查询操作符;省略则匹配全部。 |
|---|---|
| 投影 | 可选。控制返回字段:1 包含 / 0 排除。 |
返回值:游标(Cursor)
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// find:查询 age 大于 20 的用户,只返回姓名
const cursor = db.users.find(
{ age: { $gt: 20 } },
{ name: 1, age: 1, _id: 0 }
)
cursor.forEach(u => print(u.name))
运行结果:
Alice
Bob
📌 注意事项
- 返回游标而非数组;需 toArray()/forEach()/next() 消费
- 投影 1/0 不能混用(_id 除外)
- find() 只读,不会修改文档
- 在 mongosh 交互中直接输入 find() 会自动打印前 20 条(it 查看更多)
🏷️ 相关标签
💡 相关案例
删除文档与Node.js入门
Express与mongoose集成:Web应用架构
mongoose高级模式:性能与灵活性
mongoose模型与Schema设计
性能优化与监控:生产级调优
RESTful API全实战:完整CRUD设计
📚 相关教程
❓ 常见问题
Qfind() 返回的是数组吗?
A不是,返回游标。需要数组时用 .toArray() 或 .toArray() 前的迭代方法转换。
Qfind() 返回的是什么?
Afind() 返回一个游标(cursor),不是数组。可以用 toArray() 转为数组,或用 forEach/next 等方式迭代;游标惰性加载,只在读取时从服务端拉取数据。
Qfind() 第二参数做什么用?
A它是投影(projection),指定返回哪些字段:1 包含、0 排除(两者不能混用除 _id 外)。用于减少网络传输和数据量。