find(查询文档)
最后更新:2026-10-09
find(查询文档)
find是MongoDB的查询命令,mongosh中通常用db.collection.find(filter, projection)辅助方法调用,底层命令形式为db.runCommand({ find: 'orders', filter: {...} })。支持filter、projection、sort、limit、skip、batchSize等参数。返回游标,id非0时需getMore取后续批次。
| 分类 | 管理命令 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
db.orders.find({ status: "shipped" }).limit(10)
db.runCommand({
find: "orders",
filter: { status: "shipped" },
limit: 10
})
⚙️ 参数
| filter | 查询条件文档 |
|---|---|
| projection | 返回字段控制(1包含/0排除) |
| sort/limit/skip | 排序、条数限制与跳过 |
返回值:返回游标,firstBatch含匹配文档,id非0时需getMore
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// find:命令形式查询
use shop
db.runCommand({
find: 'orders',
filter: { status: 'shipped' },
sort: { createdAt: -1 },
limit: 5
})
运行结果:
{ cursor: { firstBatch: [ { _id: ObjectId('...'), status: 'shipped' } ], id: 0, ns: 'shop.orders' }, ok: 1 }
📌 注意事项
- 日常用find()辅助方法即可,命令形式适合精确控制batchSize
- 返回游标,id非0时需getMore取后续批次
- 用explain()查看是否走索引
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Qfind和findOne什么关系?
AfindOne是find的封装,内部加limit: 1并返回首条文档。
Q返回游标怎么取完所有数据?
A用toArray()或游标迭代;id非0时服务端自动getMore。
Q查询性能怎么看?
A用explain()查看执行计划,关注是否走索引与executionStats。