修改文档
update方法
格式:
db.<collection>.update(查询条件,新对象)
默认情况下,update只修改一个。
比如,我们想把排骨精改为白骨精,代码如下:
db.stus.update({name:"排骨精"},{name:"白骨精"});
执行完的小伙伴可能发现问题了,为啥子白骨精的年龄跟性别不见了嘞???
注意:update方法默认会使用新对象来替换旧的对象,因此,它默认就是拿一个只有name属性的白骨精替换了整个排骨精,因而age和sex一栏都变空了。
这明显不是我们想要的,我们其实只想要改一个数据。
因此,就引出了我们的修改操作符:
$set 用来修改我们文档中的特定熟悉
格式:
db.<collction>.update(查询条件,$set:{查询对象})
比如,我们想给刚才的白骨精修改一个年龄(改成18),则代码如下:
db.stus.update(
{name:"白骨精"},
{
$set:{
age:18
}
}
)
这里当然也可以同时修改两项,比如我们不仅设置她18岁,还设置她是女的上海人,那么代码就是:
db.stus.update(
{name:"白骨精"},
{
$set:{
age:18,
sex:"female"
address:"上海"
}
}
)
$unset用来删除文档的指定属性
格式:
db.<collction>.update(查询条件,$unset:{查询对象})
比如,白骨精不是上海人氏,我们现在想删除她的地址,则代码如下:
db.stus.update(
{name:"白骨精"},
{
$unset:{
address:"上海"
}
}
)
因为是删除,所以上面的上海信息也可以随便填,比如填北京甚至123,如下:
db.stus.update(
{name:"白骨精"},
{
$unset:{
address:123
}
}
)
前面我们说了,update默认是改一个,那么我们可不可以改多个呢?答案是肯定的。方法如下(多加一个参数{multy:true}):
db.<collction>.update(查询条件,$unset:{查询对象},{multy: true})
假如我们要把所有的唐僧的户口改到天津去,则代码如下:
db.stus.update(
{name:"唐僧"},
{
$set:{
address:"天津"
}
},
{
multi:true
}
)
查询结果如下:
replaceOne()方法
功能:直接用一个新的对象代替一个符合条件的文档
格式跟update差不多,这里直接贴代码,假如我们要给zhubajie改个名,改为中文名,然后其他信息抹掉,那么代码如下:
db.stus.replaceOne(
{name:"zhubajie"},
{name:"猪八戒"}
)
查询结果如下:
updateOne()方法
功能:修改一个符合条件的文档
格式跟update差不多,这里直接贴代码,假如我们要给一个唐僧添加地址:少林寺,那么代码如下:
db.stus.updateOne(
{name:"唐僧"},
{
$set:{
address:"少林寺"
}
}
)
查询结果如下:
updateMany()方法
功能:同时修改多个符合条件的文档
格式跟update差不多,这里直接贴代码,假如我们要给所有唐僧修改地址:北京,那么代码如下:
db.stus.updateMany(
{name:"唐僧"},
{
$set:{
address:"北京"
}
}
)
查询结果如下: