Mongodb(四):Mongodb的增删改查(2)修改器

前面说的更新是整体更新,那怎样做到局部更新呢?Mongodb中使用修改器来完成局部更新操作:

(1) $set: 这个在前面接触过,它用来指定一个键值对,如果存在键就进行修改,不存在则进行添加.如下:

    

    如上:name字段存在,将其进行了更改,age字段不存在,将其进行了添加

(2) $inc:只能对数字类型进行操作,可以为指定的键对应的数字类型的数值进行加减操作

    

    如上:为年龄字段增加了2,如果是负数,就是相减。并且,还有一点要注意:如果$inc操作的字段不存在,那么会添加这个字段,

    并且值就是指定的值(只能是数子类型)。

(3) $unset:用法很简单,就是删除指定的键,一看就明白,如下:

    

    说明: db.customer.update({"_id":"001"}, {"$unset":{"num":1}}),num是要删除的字段,1代表删除

(4) $push:这个修改器是用来操作数组的。演示如下:

    a.如果键指定的数组存在,则向该数组中追加数据,如下:

    

    b.如果指定的键不是数组但却存在的话,就会报错,如下:

    

    c.如果指定的键不存在的话,则创建数组类型的键值对,如下:

    

(5) $pushAll:用法和$push相似,可以批量添加数组数据,如下:

    

(6) $addToSet:也是用来操作数组的,目标数组存在该值就不添加,不存在就添加,有点像Java中的set集合.如下:

    

    注意:如果指定的键不存在,则会创建数组类型的键值对.

(7) $pop:从指定数组删除一个值: 1代表删除最后一个数值,  -1代表删除第一个数值,如下:

    

(8) $pull:删除数组中一个被指定的数值,要注意,是操作数组啊...如下:

    

(9) $pullAll:一次性删除数组中多个被指定的数值,具体用法参考$pushAll

(10) $addToSet$each结合完成批量数组更新

     例如:db.customer.update({"_id":"001"}, {"$addToSet":{"hobby":{"$each":["football", "basketball"]}}})

     

     $each会循环[ ]中的值,$addToSet进行判断,如果数组中的值存在于原来的数据中,则不添加。否则添加。

(11) $:数组定位器。这个留到查询的时候再说吧。

原文地址:https://www.cnblogs.com/wuxilc/p/4046142.html