7.修改文档

修改文档

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:"北京"
        }
    }
)

查询结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值