Object (Document)(内嵌文档)
最后更新:2026-10-09
Object (Document)(内嵌文档)
Object指文档内的嵌套子文档,MongoDB支持任意层级嵌套,形成自描述数据模型。嵌套字段用点号路径访问,查询中需用引号包裹点号字段名,如`'profile.address.city'`。适合一对一关系(用户资料、订单地址);独立增长或单独查询的数据建议拆集合。
| 分类 | BSON 类型 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ profile: { name: "alice", address: { city: "beijing" } } }
db.users.find({ "profile.address.city": "beijing" })
返回值:嵌套文档本身;查询时返回匹配文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// Object:嵌套文档的写入与查询
use shop
db.users.insertOne({ profile: { name: 'alice', address: { city: 'beijing' } } })
db.users.find({ 'profile.address.city': 'beijing' })
运行结果:
{ _id: ObjectId('...'), profile: { name: 'alice', address: { city: 'beijing' } } }
📌 注意事项
- 点号路径访问嵌套字段,字段名含点或$需转义
- 内嵌适合一对一;一对多考虑数组或独立集合
- 更新整个子文档用$set,单字段用点号路径
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q内嵌文档能嵌多深?
A官方限制约100层嵌套深度,实际受16MB文档大小约束,远达不到。
Q内嵌还是独立集合?
A一对一、总是随主文档一起读的用内嵌;独立增长、单独查询的拆集合。
Q嵌套字段怎么查询?
A用点号加引号:{ 'profile.address.city': 'beijing' }。