定义
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的更改操作,为一个已经存在的数组排序。 |