$rename(字段重命名)
最后更新:2026-10-09
$rename(字段重命名)
$rename 重命名字段。`{ $rename: { 'oldName': 'newName' } }`,支持点路径处理嵌套字段。若新字段名已存在,旧值会覆盖新字段;目标字段不存在则直接创建。注意:$rename 不会重命名数组元素内部的字段,且移动嵌套字段时不会创建中间文档。
| 分类 | 更新字段 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $rename: { <旧字段名>: <新字段名> } }
⚙️ 参数
| 旧字段名 | 要重命名的源字段名。 |
|---|---|
| 新字段名 | 目标字段名,支持点路径。 |
返回值:更新结果文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $rename:把 username 改为 handle
// 字段不存在时忽略
db.users.updateOne(
{ _id: 1 },
{ $rename: { username: 'handle' } }
)
// 嵌套字段重命名
db.users.updateOne(
{ _id: 1 },
{ $rename: { 'profile.city': 'profile.cityName' } }
)
运行结果:
// 文档中 username 字段变为 handle;profile.city 变为 profile.cityName
📌 注意事项
- 若新字段名已存在,旧值覆盖新字段
- 不处理数组元素内部的字段
- 源字段不存在时静默忽略
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$rename 能重命名嵌套字段吗?
A能,用点路径如 'profile.city'。
Q$rename 新字段名已存在会怎样?
A旧值直接覆盖新字段的现值。
Q$rename 会处理数组里的字段吗?
A不会,数组元素内的字段需要遍历更新。