Bulk.find.updateOne()
提示
MongoDB 还提供了用于执行批量写入操作的 db.collection.bulkWrite()
方法。
说明
Bulk.find.updateOne(<update>)
将单个文档更新操作添加到批量操作列表中。
使用
Bulk.find()
方法指定用于确定更新哪个文档的条件。Bulk.find.updateOne()
方法将更新限制为单个文档。 要更新多个文档,请参阅Bulk.find.update()
。Bulk.find.updateOne()
接受以下参数:Parameter类型说明文档或管道要应用的修改。可以是以下之一:
替换文档仅包含字段和值对。
另请参阅
Bulk.find.replaceOne()
。Update document只包含更新操作符表达式。聚合管道仅包含以下聚合阶段:
$addFields
及其别名$set
有关更新修改参数的更多信息,请参阅
db.collection.updateOne()
参考页面。Bulk.find()
和更新文档中关联<query>
文档的总和必须小于或等于最大 BSON 文档大小。要为此操作指定upsert: true ,请与
Bulk.find.upsert()
一起使用。要指定
arrayFilters
来更新特定数组元素,请与Bulk.find.arrayFilters()
一起使用。要指定相关
Bulk.find()
的索引,请参阅Bulk.find.hint()
。要批量替换文档,另请参阅
Bulk.find.replaceOne()
。
行为
如果<update>
文档仅包含更新操作符表达式,如下所示:
{ $set: { status: "D" }, $inc: { points: 2 } }
然后, Bulk.find.updateOne()
仅更新文档中相应的字段status
和points
。
例子
以下示例为items
集合初始化Bulk()
操作构建器,并将各种updateOne()
操作添加到操作列表中。
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).updateOne( { $set: { status: "I", points: "0" } } ); bulk.execute();
使用聚合管道进行更新
更新方法可以接受聚合管道。例如,以下使用:
聚合变量
NOW
,解析为当前日期时间,可以提供与$currentDate
更新操作符表达式相似的行为。要访问聚合变量,在变量前加上双美元符号$$
并用引号引起来。
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "P" } ).updateOne( [ { $set: { points: 0, lastModified: "$$NOW" } } ] ); bulk.execute();