https://blog.csdn.net/congcong68/article/details/46781777
1. 修改的语法
db.collection.update( <query>, <update>, upsert:<boolean>, multi:<boolean> )
参数 |
类型 |
描述 |
query |
document |
要修改哪些的查询条件,类似于SQL 的 where |
update |
document |
要修改的字段对应的值 |
upsert |
boolean |
可选的,默认值是false。如果根据查询条件没找到对应的文档,如果设置为true,相当于执行insert,如果设置为false,不做任何的操作。 |
multi |
boolean |
可选的,默认值是false。如果根据查询条件找到对应的多条记录是,如果设置为false时,只修改第一条,如果设置为true,全部更新 |
2.对单个字段进行修改 参数update部分
名称 |
描述 |
$inc |
根据要添加的值递增该字段的值。 |
$mul |
将该字段的值乘以指定的值 |
$rename |
重命名字段 |
$setOnInsert |
操作时,操作给相应的字段赋值(不知道啥意思) |
$set |
用来指定一个键的值,如果不存在则创建它 |
$unset |
用来指定一个键的值,如果不存在不创建创建它 |
$min |
只有当指定的值小于现有字段值时才更新该字段。 |
$max |
只有当指定的值大于现有字段值时才更新该字段。 |
1> 用$set来根据查询条件修改文档,用来指定一个键的值,如果不存在则创建它
db.orders.update( {"onumber" : "001"}, { $set: { "cname " : "zcy"} }, false, true )
2>$mul 将该字段的值乘以指定的值
{ $mul: { field: <number> } }
>db. orders.update( {"ino" : "001"}, { $mul: {"quantity" :3} } )
quantity的值*3 后设置
3>$inc,指定属性的值加上现在的值,如果键不存在则创建它。
{ $inc: { <field1>: <amount1>,<field2>: <amount2>, ... } }
>db. orders.update( {"onumber" : "001","items.ino":"001"}, { $inc: {"items.price" : 2.0} } )3.对数组进行修改
名称 |
说明 |
$ |
作为一个占位符的更新与查询条件在一个更新的第一要素 |
$addToSet |
将元素添加到数组中,仅当它们在集合中不存在 |
$pop |
删除数组的第一个或最后一个项 |
$pullAll |
从数组中移除所有匹配值 |
$pull |
移除匹配指定查询的所有数组元素 |
$pushAll |
将所有值添加到数组中 |
$push |
将值添加到数组中,如果有的数组存在则向数组末尾添加该值,如果数组不存在则创建该数组并保存该值 |
1> $: 更新数组中第一个匹配的子文档
db. orders.update( {"onumber" : "001","items.ino":"001"}, { $set: {"items.$.price" : 8.0} } )
db. orders.update( {"onumber" : "001","items.ino":"001","items.products.pno":"001"}, { $set: {"items.0.products.$.pName": "ps"} } )
语法items.0. products.$. pName,0代表items第一个数组(也就是数组的下标),$ 更新数组中第一个匹配的子文档。
2> $pop删除数组的第一个或最后一个项
{ $pop: { <field>: <-1 | 1>,... } }
1最后一项
-1是第一项
3> $push将值添加到数组中,如果有的数组存在则向数组末尾添加该值,如果数组不存在则创建该数组并保存该值
{ $push: { <field1>: <value1>,... } }