第一部分 更新文档
文档存入数据库之后,就可以采用Update来修改它的内容,
参数说明:
1.1 创建与删除($set与$unset)
$set 用来指定一个键的值,如果这个键不存在就创建,否则就更新.
添加一个新的字段没有问题, 那么添加一个数组呢?? (当然添加字典也是没问题的,不在此演示)
删除某个字段---$unset
1.2 专职数字($inc)
$inc [increase: 增加] 修改器用来已有的键的值,不存在则创建;只能来增加或减少数字值, 数值可以设置为来增加或减少, 仅此用于
1.3 数组修改器($push)
如果在之前的数据中添加一个, 并且存储一个数组中就可以采用, 之前的,那么$push是否会存在这种情况?
结果
以上的做法实现了, 向数组中添加元素(不是替换), 但是问题是加入我不希望重复添加相同的数据, 接下来实现我们需求的就是
1.4 $addToSet 添加
不重复的将元素添加到集合中--$addTOSet
$push 与 $addToSet的异同点:
我们在添加一个属性----评价(evaluate)这个数组, 并将一个数组遍历的存入数据库
我们就可以采用$each与$addToSet结合使用
结果如下
1.5 操作数组(删除$pop/$pull)
数组是无序的,如何删除特定的元素----第一个? 最后一个? 匹配的某一些?
如何达到所需要求,Mongodb给出了相应的关键字---$pop $pull
原先添加一些测试数据
1.5.1 $pop 删除首尾数据
脑洞大开的话, 可以试试别的数字 -_-
1.5.2 $pull 删除匹配数据
在此会删除匹配的数据,参数项不可为数组
1.5.2 操作指定位置的数组元素---$
源数据如下,需求:更改课程(courses)中,Nodejs的学分(credit)为99
提示: 数组下标是从0开始,并且数组名与对象key都有了
第一种: 依据数据下标, 结合$set, 拆找到指定元素就更改.缺点:前提是需要知道位置;
第二种使用MongoDB的关键字--$进行匹配,注意:只可以更改第一个匹配的数据.
实例如下:
比着葫芦画瓢但是报错了!!!!
主要原因是update的查询条件返回的不是数组, 所以无法匹配更改
正确的做法为
1.5.3 $pushAll添加所有项目
1.5.4 $pullAll删除所有匹配项
1.5.5 $each与$addToSet/$push结合使用
1.5.6 $slice稍后更新1.5.7 $sort稍后更新1.6 第三个参数---upsert
upsert :如果不存在update的记录,true为插入,默认是false,不插入。
如果再次执行下边的代码, 会在time基础之上+10
1.7 第四个参数---multi
之前的操作都是基于一个的操作,只匹配第一个,但是假如需要匹配多项, 那么就需要设置
更新第一个credit, 如果存在在基础上加1, 否则创建该字段
添加一个新的数据
现在有两条数据, name都为, 为每个name=Mongodb的数据添加一个字段为:"teacher: hhw".
第二部分 删除文档2.1 remove
只会删除集合users的文档,但是不会删除集合本身,原有的索引也会存在,但是数据删除时永久性的, 不能撤销.
2.2 deleteOne/deleteMany
删除速度更快的可以采用drop_collections("users"), 速度很快但是,集合与索引都删除了.
领取专属 10元无门槛券
私享最新 技术干货