更新又三個方法:
db.collection.updateOne(<filter>, <update>, <options>)
db.collection.updateMany(<filter>, <update>, <options>)
db.collection.replaceOne(<filter>, <update>, <options>)
mongodb提供了很多操作符用于修改制定的字段,比如"$set"。
結構如下:
{ <update operator>: { <field1>: <value1>, ... }, <update operator>: { <field2>: <value2>, ... }, ... }
一些更新操作符,如$set,将在字段不存在的情況下建立字段。有關詳細資訊,請參閱個别更新操作符參考。
更新單個文檔
下面的示例在庫存集合上使用db.collection.updateOne()方法來更新第一個文檔,其中item等于“paper”
db.inventory.updateOne( { item: "paper" }, { $set: { "size.uom": "cm", status: "P" }, $currentDate: { lastModified: true } } )
使用$set操作符更新size.uom和status的值。
使用$currentDate操作符将lastModified字段的值更新為目前日期。如果lastModified字段不存在,$currentDate将建立該字段。詳情請參見$currentDate。
更新多個文檔
db.inventory.updateMany( { "qty": { $lt: 50 } }, { $set: { "size.uom": "in", status: "P" }, $currentDate: { lastModified: true } } )
類似更新單個文檔,隻是比對條件不同
注意:
1.MongoDB中的所有寫入操作都是在單個文檔的級别的原子。有關MongoDB和Atomicity的更多資訊,請參閱原子性和事務。
2._id不允許修改。一旦設定,您就不能更新id字段的值,也不能用具有不同id字段值的替換文檔替換現有文檔。
3.對于寫操作,MongoDB保留文檔字段的順序,以下情況除外:
3.1.id字段總是文檔中的第一個字段。
3.2.包括重命名字段名的更新可能會導緻文檔中字段的重新排序。
4.對于寫入安全,您可以指定MongoDB以進行寫入操作所請求的确認級别。有關詳細資訊,請參閱寫安全。
MongoDB提供了以下方法來更新集合中的文檔:
<col>
db.collection.updateOne()
即使多個文檔可能比對指定的篩選器,但最多隻更新一個比對指定篩選器的文檔。
db.collection.updateMany()
更新與指定篩選器比對的所有文檔。
db.collection.replaceOne()
即使多個文檔可能比對指定的篩選器,但最多隻替換比對指定篩選器的單個文檔。
db.collection.update()
更新或替換與指定篩選器比對的單個文檔,或更新與指定篩選器比對的所有文檔。預設情況下,db.collection.update()方法更新單個文檔。要更新多個文檔,請使用multi選項。
以下方法也可以更新集合中的文檔:
db.collection.findOneAndReplace().
db.collection.findOneAndUpdate().
db.collection.findAndModify().
db.collection.save().
db.collection.bulkWrite().