9.文档的更新
(1)方法
Db.collName.updateOne()
Db.collName.updateMany()
Db.collName.update()
Db.collName.relpaceOne()
(2)语法
db.collName.update(
,
,
{
upsert: ,
multi: ,
writeConcern:
}
)
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sqlupdate查询内set后 面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认 是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查 出来多条记录全部更新。
writeConcern :可选,用于控制写入安全的
(3)更新操作
a. $set 设置字段的值 用法 : { $set : { field : value } }
$unset 删除字段 用法:{ $unset : { field : 1} }
例子:
db.users.updateOne({name:"zhang"},{$unset:{age:0}})//删除一个字段
b. $inc 字段增加 字段要求是数字 用法:{ $inc : { field : value } }
例子:
db.users.updateOne({name:"zhang"},{$inc:{age:10}})//age自动+10,自减-10即可
c. $push 给字段添加值,字段要求是数组 用法:{ $push : { field : value } }
例子:
db.users.updateOne({name:"zhang"},{$push:{info:'hello'}})
d. $pushAll 同pusth 一次可以追加多个值 { $pushAll : { field : value_array } }
例子:
db.users.updateOne({name:"王"},{$pushAll:{info:[1,2,3,4,5]}}
e. $pop 删除数组内的一个值 用法:删除最后一个值:{ $pop : { field : 1 } }删除第一个值:{ $pop : { field : -1 } }
例子:
db.users.updateOne({name:"王"},{$pop:{info:1}}
$min 更改比键对应值小的记录:{ $min: { : } }
$max 更改比键对应值大的记录:{ $max: { : } }
$currentDate 更改时间类的值到当前时间:{$currentDate:{ "CreateAt" : true}}
(4)实例
// 修改一条
db.collName.updateOne({条件字段:"值"},{$set:{字段:"修改后的值"}});
//修改多条数据
db.users.updateMany({条件字段:"值"},{$set:{字段:"修改后的值"}});
//修改一条
db.users.update({条件字段:"值"},{$set:{字段:"修改后的值"}});
// 修改多条
db.users.update({条件字段:"值"},{$set:{字段:"修改后的值"}},{multi:true})
//存在就修改,不存在就添加
db.users.updateOne({条件字段:"值"},{$set:{字段:"修改后的值",字段:"修改后的值"}},{upsert:true});
//替换文档
db.users.replaceOne({条件字段:"值"},{字段:"修改后的值"});