MongoDB 更新文档
在 MongoDB 中,更新文档的操作是数据库管理的核心任务之一。MongoDB 提供了多种方法来更新文档,包括 updateOne()
、updateMany()
、replaceOne()
和 findOneAndUpdate()
。以下是这些方法的详细介绍和使用示例。
方法一:updateOne()
updateOne()
方法用于更新集合中满足指定条件的第一个文档。
// 选择数据库
use myDatabase;
// 更新 myCollection 集合中 name 为 "Alice" 的第一个文档
db.myCollection.updateOne(
{ name: "Alice" }, // 查询条件
{ $set: { age: 26, city: "New York City" } } // 更新操作,使用 $set 修改字段值
);
方法二:updateMany()
updateMany()
方法用于更新集合中所有满足指定条件的文档。
// 选择数据库
use myDatabase;
// 更新 myCollection 集合中所有 age 小于 30 的文档
db.myCollection.updateMany(
{ age: { $lt: 30 } }, // 查询条件,$lt 表示小于
{ $set: { status: "active" } } // 更新操作,设置 status 字段为 "active"
);
方法三:replaceOne()
replaceOne()
方法用于替换集合中满足指定条件的第一个文档。注意,这个方法会完全替换匹配的文档,而不是仅更新某些字段。
// 选择数据库
use myDatabase;
// 替换 myCollection 集合中 name 为 "Bob" 的第一个文档
db.myCollection.replaceOne(
{ name: "Bob" }, // 查询条件
{ name: "Bob Updated", age: 31, city: "Los Angeles", status: "inactive" } // 新文档,完全替换匹配的文档
);
方法四:findOneAndUpdate()
findOneAndUpdate()
方法结合了查找和更新的操作,它查找满足指定条件的第一个文档,并对其进行更新。此外,该方法还可以返回更新前的文档或更新后的文档(取决于选项的设置)。
// 选择数据库
use myDatabase;
// 查找并更新 myCollection 集合中 name 为 "Charlie" 的第一个文档,返回更新后的文档
var updatedDoc = db.myCollection.findOneAndUpdate(
{ name: "Charlie" }, // 查询条件
{ $set: { age: 36, city: "Chicago Updated" } }, // 更新操作
{ returnOriginal: false } // 选项,设置为 false 以返回更新后的文档
);
// 打印更新后的文档
console.log(updatedDoc);
注意:
在 findOneAndUpdate()
方法中,returnOriginal
选项用于控制返回的是更新前的文档还是更新后的文档。默认情况下,它返回更新前的文档(returnOriginal: true
)。将其设置为 false
可以返回更新后的文档。但是,从 MongoDB 4.0 开始,这个选项已经被 returnDocument
选项所替代,其中 returnDocument: "before"
返回更新前的文档,returnDocument: "after"
返回更新后的文档。
验证更新
无论使用哪种方法更新文档,你都可以使用 find()
方法来验证文档是否成功更新。
// 查找并格式化输出 myCollection 集合中的所有文档
db.myCollection.find().pretty();
本文地址:https://www.tides.cn/p_mongodb-update-document