findOne()(查询单条文档)

最后更新:2026-10-09

findOne()(查询单条文档)

findOne()查询第一条匹配条件的文档并直接返回文档对象,而不是游标,例如`db.users.findOne({ name: 'Alice' })`。多条匹配时返回自然顺序的第一条,无匹配返回null。它比find()少一步遍历,适合按唯一字段(如_id、用户名)取单条记录的场景。

分类读取
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

db.<集合>.findOne(<过滤条件>, <投影>)

⚙️ 参数

过滤条件匹配文档的条件对象,支持查询操作符。
投影可选。控制返回字段:1包含/0排除。

返回值:匹配的第一条文档对象;无匹配返回null。

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// findOne:按_id查询单条用户
const user = db.users.findOne(
  { _id: ObjectId('64c8a1b20000000000000001') },
  { name: 1, age: 1, _id: 0 }
)
user

运行结果:

{ name: 'Alice', age: 21 }

📌 注意事项

📚 相关教程

❓ 常见问题

QfindOne和find().limit(1)一样吗?
A效果类似但findOne()直接返回文档对象,find()返回游标还需迭代;按唯一字段取值时推荐findOne()。
QfindOne查不到数据返回什么?
A返回null,不会抛错。一般写成if (doc) { ... }来消费结果。
QfindOne能只返回部分字段吗?
A可以,用第二个参数做投影,例如{projection: {name: 1}}或直接传{name: 1}。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏