MongoDB 修改文档操作

MongoDB 修改文档操作

  • 语法 db.collection.update(query,update,upsert,multi)
    • 功能: 更新一个文档数据
    • query参数,定位要更新的数据,相当于SQL中的where子句;1
    • update参数:将要更新的数据,相当于SQL中的set内容;
    • upsert参数:默认为false,当query未找到文档时,则无法修改,为true时,则插入对应文档
    • multi参数:默认为false,当query找到多个文档时,则只更新第一条,为true,则全部更新

1、upsert参数

取值 说明
false 默认值,当query条件未找到指定的文档时,则不进行修改
true 当query条件未找到指定的文档时,则自动添加该条文档
db.py.update(
			{model:"mate 20"},  // query 参数
			{$set:{price:5000}},  // update 参数
			false,   // 修改文档,查找到mate20的文档并将价格改为5000
			)  
WriteResult({ "nMatched" : 5, "nUpserted" : 0, "nModified" : 1 }) //查找到5条,修改1条

db.py.update(
			{model:"mate 21"},
			{$set:{price:5000}},
			true,    // 未找到mate21的文档,则添加该条文档
			)  
WriteResult({
	"nMatched" : 0,
	"nUpserted" : 1,
	"nModified" : 0,
	"_id" : ObjectId("5cb6c2a534a564e112504860")
})  // 查找到0条,插入1条

2、multi参数

取值 说明
false 默认值,当query条件找到多个文档时,则只更新第一条
true 当query条件找到多个文档时,则全部修改
db.py.update(
			{model:"mate 20"},
			{$set:{price:5500}},
			false,
			false   // 只修改第一条
			)  
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) // 查找到1条,修改1条

db.py.update(
			{model:"mate 20"},
			{$set:{price:5500}},
			false,
			true  // 全部修改
			)  
WriteResult({ "nMatched" : 6, "nUpserted" : 0, "nModified" : 5 }) // 查找到6条,修改5条

3、update参数

修改器 说明
$set 设置一个域的值或多个域的值,如果没有该域的话,则自动增加一个域
$unset 删除一个域
$rename 修改域的名称
$inc 对某个域的值进行加减修改
$mul 对某个域的值进行乘法修改
$min 设定某个域的最小值,如果文档指定域的值小于min的值,则不修改,如果大于,则改为min的值
$max 设定某个域的最大值,如果文档指定域的值小于max的值,则改为max的值,如果大于,则不修改
db.py.update(
			{model:"mate 20"},
			{$set:{price:3988, brand:"huawei"}}  // 价格修改为3988,并增加品牌华为
			)

db.py.update(
			{model:"mate 20"},
			{$unset:{brand:1}}  // 删除品牌的域,brand后面设置任何数字,都是删除
			)

db.py.update(
			{model:"mate 20"},
			{$rename:{price:"jiage"}}  // 将price域的名称修改为jiage
			)
db.py.update(
			{model:"mate 20"},
			{$inc:{price:1}}   // 将mate20的价格加1,如果没有price这个域,则增加该域,值为1
			)
db.py.update(
			{model:"mate 20"},
			{$inc:{price:1}}   // 将mate20的价格加1,如果没有price这个域,则增加该域,值为1
			)
db.py.update(
			{model:"mate 20"},
			{$min:{price:3800}}   // 如果mate20的价格大于3800,则修改该域,即该域的最小值为3800
			)
  • 数组修改器
修改器 说明
$push 向数组中添加一项
$pushAll 向数组中添加多项元素,注意MongoDB3.6版本取消了这个修改器
$pull 从数组中删除一项
$pullAll 从数组中删除多项
$addToSet 向数组中添加一项,如果原数组中有重复项,则不修改
db.py.update(
			{model:"nova2"},
			{$push:{CPU:"huawei"}} // 向数组中添加一项,如果没有该数组,则添加该数组
			)
db.py.update(
			{model:"nova2"},
			{$pushAll:{CPU:["4核","内存8G"]}} // 向数组中添加多项,3.6以后的版本无法使用
			)
db.py.update(
			{model:"nova2"},
			{$push:{CPU:{$each:["4核","内存8G"]}}} // 向数组中添加多项
			)
db.py.update(
			{model:"nova2"},
			{$pull:{CPU:"huawei"}} // 向数组中删除一项
			)
db.py.update(
			{model:"nova2"},
			{$pullAll:{CPU:["4核","内存8G"]}}  // 向数组中删除多项
			)
db.py.update(
			{model:"nova2"},
			{$pop:{CPU:-1}}   // 从数组中弹出第一个元素,值为1时,弹出最后一个元素
			)

  1. query的使用. ↩︎

发布了75 篇原创文章 · 获赞 87 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43883022/article/details/89354173