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} }
)
4> $rename 重命名字段
> db.orders.update({"metadata.systemtag":"xxxx"},{$rename: { 'data.aaaa':'data.bbbb','data.cccc':'data.dddd' }},false,true)
5> MongoDB删除指定字段
db.collection.update({},{"$unset":{"key":""}},{multi:true})
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>,... } }