MongoDB 修改文档操作
- 语法 db.collection.update(query,update,upsert,multi)
- 功能: 更新一个文档数据
- query参数,定位要更新的数据,相当于SQL中的where子句;
- update参数:将要更新的数据,相当于SQL中的set内容;
- upsert参数:默认为false,当query未找到文档时,则无法修改,为true时,则插入对应文档
- multi参数:默认为false,当query找到多个文档时,则只更新第一条,为true,则全部更新
1、upsert参数
取值 |
说明 |
false |
默认值,当query条件未找到指定的文档时,则不进行修改 |
true |
当query条件未找到指定的文档时,则自动添加该条文档 |
db.py.update(
{model:"mate 20"},
{$set:{price:5000}},
false,
)
WriteResult({ "nMatched" : 5, "nUpserted" : 0, "nModified" : 1 })
db.py.update(
{model:"mate 21"},
{$set:{price:5000}},
true,
)
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("5cb6c2a534a564e112504860")
})
2、multi参数
取值 |
说明 |
false |
默认值,当query条件找到多个文档时,则只更新第一条 |
true |
当query条件找到多个文档时,则全部修改 |
db.py.update(
{model:"mate 20"},
{$set:{price:5500}},
false,
false
)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
db.py.update(
{model:"mate 20"},
{$set:{price:5500}},
false,
true
)
WriteResult({ "nMatched" : 6, "nUpserted" : 0, "nModified" : 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"}}
)
db.py.update(
{model:"mate 20"},
{$unset:{brand:1}}
)
db.py.update(
{model:"mate 20"},
{$rename:{price:"jiage"}}
)
db.py.update(
{model:"mate 20"},
{$inc:{price:1}}
)
db.py.update(
{model:"mate 20"},
{$inc:{price:1}}
)
db.py.update(
{model:"mate 20"},
{$min:{price: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"]}}
)
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}}
)