MongoDB 更新/删除文档(四)

第一部分 更新文档

文档存入数据库之后,就可以采用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"), 速度很快但是,集合与索引都删除了.

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180123G0OOZ200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券