定義
db.collection.update(query, update, options)
改變一個在集合中已經存在的文檔或文檔數組。默認的,update()方法更新一個獨立的文檔。如果multi選項被設置為true(真),這個方法更新匹配條件的所有文檔。
方法格式:
db.collection.update(
<query>,
<update>,
{ upsert: <boolean>, multi: <boolean> }
)
參數 | 類型 | 描述 |
---|---|---|
query | 文檔 | 選擇器,與find()中的用法一樣。 |
update | 文檔 | 改變 |
upsert | 文檔、布爾 | 可選。默認為false。如果為true,則表示“如果文檔不存在,則創建集合。” |
multi | 文檔、布爾 | 可選。默認為false。如果為true,則表示“更改所有符合條件的項目。” |
update參數說明
Name | Description |
---|---|
$inc | 通過指定的數值自增長某個字段的值。 |
$rename | 重命名一個字段 |
$setOnInsert | 當文檔在upsert創建期間,設置一個字段的值。對於已經存在的項目的更新不起作用。 |
$set | 在一個已經存在的文檔的字段值。 |
$unset | 從一個文檔中移除一個字段。 |
示例
db.products.update( { sku: "abc123" },
{ $inc: { quantity: 5 } } )
增長sky為abc123的文檔的quantity字段的值5次。(如:原為1,增長后為6)
數組操作
Name | Description |
---|---|
$ | 作為一個占位符來更新一次update操作中的第一個符合條件的元素。 |
$addToSet | 僅當它們在集合中不存在的時候,添加元素到一個已經存在的數組。 |
$pop | 移除一個數組中第一個或最后一個元素。 |
$pullAll | 從一個數組中移除所有元素。 |
$pull | 從一個數組中移除匹配的元素。 |
$pushAll | 不建議使用. 添加所有元素。 |
$push | 添加一個元素。 |
$push簡單說明
格式
db.collection.update( <query>,
{ $push: { <field>: <value> } }
)
示例
db.students.update(
{ name: "joe" },
{ $push: { scores: 89 } }
)
更改器
Name | Description |
---|---|
$each | $push和$addToSet的更改操作,為一個數組更新多個附加的項目。 |
$slice | $push的更改操作來限制被更新數組的尺寸。 |
$sort | $push的更改操作,為一個已經存在的數組排序。 |