MongoDB 文档修改命令


一、基本语法

db.集合名.updateOne(过滤条件, 修改内容)   // 修改第一条匹配的文档
db.集合名.updateMany(过滤条件, 修改内容)  // 修改所有匹配的文档
db.集合名.replaceOne(过滤条件, 新文档)    // 替换整条文档

二、常用修改操作符

操作符作用
$set修改或新增字段
$unset删除字段
$inc数字字段自增/自减
$rename重命名字段
$push向数组字段追加元素
$pull从数组字段删除元素

三、示例

修改单条文档

db.users.updateOne(
  { name: "张三" },       // 过滤条件:找到 name 为张三的文档
  { $set: { age: 20 } }  // 将 age 改为 20
)

修改多条文档

db.users.updateMany(
  { age: { $lt: 18 } },      // 过滤条件:age 小于 18
  { $set: { status: "未成年" } }
)

数字自增

db.users.updateOne(
  { name: "张三" },
  { $inc: { age: 1 } }  // age 加 1,填负数则减
)

删除字段

db.users.updateOne(
  { name: "张三" },
  { $unset: { status: "" } }  // 删除 status 字段
)

替换整条文档

db.users.replaceOne(
  { name: "张三" },
  { name: "张三", age: 25, city: "北京" }  // 原文档被完全替换
)

四、updateOne 和 replaceOne 的区别

updateOnereplaceOne
作用只修改指定字段替换整条文档
未提及的字段保留删除

五、常见问题

Q:$set 的字段原来不存在会怎样? A:会自动新增这个字段。

Q:updateMany 没有匹配到任何文档会报错吗? A:不会报错,返回 matchedCount: 0 表示没有匹配到。