zoukankan      html  css  js  c++  java
  • 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) $:数组定位器。这个留到查询的时候再说吧。

  • 相关阅读:
    原创【cocos2d-x】CCMenuItemToggle 在lua中的使用
    SQL Server之LEFT JOIN、RIGHT LOIN、INNER JOIN的区别
    VS的IISExpress配置通过IP访问程序
    SQLServer执行大脚本文件时,提示“无法执行脚本没有足够的内存继续执行程序 (mscorlib)”
    jqGrid中multiselect: true 操作checkbox
    display:table的几个用法(元素平分宽度,垂直居中)
    ASP.NET中 前后台方法的相互调用
    AspxGridView使用手记
    大量文本框非空判断,如何提高灵活性?
    Mysql安装、配置、优化
  • 原文地址:https://www.cnblogs.com/wuxilc/p/4046142.html
Copyright © 2011-2022 走看看