Mongodb字段更新$set操作符

2021-01-21 13:56:43

参考地址 Mongodb字段更新$set操作符

一、定义

$set操作符替换掉指定字段的值

$set操作符有如下格式:


{ $set: { <field1>: <value1>, ... } }


使用点号指定一个内嵌文档的字段;


二、规则

如果指定字段不存在$set操作符将会添加一个新的字段使用指定的值,前提是新字段不能违反类型规约,如果你使用点号指定一个不存在的内嵌文档字段将会添加一个新的内嵌字段;

如果指定多个字段值对,$set操作符将会新增或者更新每个字段;

三、例子

考虑如下的products集合文档


{  _id: 100,  sku: "abc123",  quantity: 250,  instock: true,  reorder: false,  details: { model: "14Q2", make: "xyz" },  tags: [ "apparel", "clothing" ],  ratings: [ { by: "ijk", rating: 4 } ]
}


设置顶级字段


如下查询_id为100的文档并且使用$set操作符更新如下字段:


db.products.update(
   { _id: 100 },
   { $set:
      {        quantity: 500,        details: { model: "14Q3", make: "xyz" },        tags: [ "coats", "outerwear", "clothing" ]
      }
   }
)


上面的操作替换quantity的值为500,details为一个新的内嵌文档,tags为一个新的数组;



设置内嵌文档中的字段

使用点号指定内嵌文档或者数组中字段:

如下操作查询_id等于100的集合文档,并且更新内嵌文档details中的字段make:


db.products.update(
   { _id: 100 },
   { $set: { "details.make": "zzz" } }
)


设置数组中的元素:

查询调迁_id等于100的文档,如下操作更新两个元素(数组索引是1)在数组tags字段和rating字段的第一个元素(索引是0)

db.products.update(
   { _id: 100 },
   { $set:
      {        "tags.1": "rain gear",        "ratings.0.rating": 2
      }
   }
)


  • 2018-04-13 17:28:33

    jsoup 使用总结4--高级用法之 script js 脚本

    大部分时候,我们使用jsoup解析网页的时候,都是直接找到某一类元素,或者按某种selector查询;具体使用方法可以参考jsoup官网文档 那么你有没有实际操作过,查找script js 脚本呢,因为很多时候页面的内容是根据js动态生成的,或者数据是动态变更;那么这个时候,我们只是获取html页面中script js脚本之间的内容。

  • 2018-04-15 12:56:05

    WebView控件之WebSettings各种配置方法源码总结

    WebSettings用于管理WebView状态配置,当WebView第一次被创建时,WebView包含着一个默认的配置,这些默认的配置将通过get方法返回,通过WebView中的getSettings方法获得一个WebSettings对象,如果一个WebView被销毁,在WebSettings中所有回调方法将抛出IllegalStateException异常。

  • 2018-04-16 07:28:10

    android点击事件,第一次无效,第二次才响应的问题

    今天碰到的问题,android的标题栏一个回退button,每次进入的时候第一次点击无效,一直到第二次点击时才响应,然后把代码copy到系统的回退按钮里面,结果每次都能响应,后面想了想,应该跟焦点有关系

  • 2018-04-18 15:56:00

    linux下如何实现mysql数据库每天自动备份定时备份

    备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。而对于一些网站、系统来说,数据库就是一切,所以做好数据库的备份是至关重要的!

  • 2018-04-18 20:44:19

    $(...).live is not a function

    jquery中的live()方法在jquery1.9及以上的版本中已被废弃了,如果使用,会抛出TypeError: $(...).live is not a function错误。

  • 2018-04-19 16:31:03

    mysql双机热备的实现

    准备两个mysql,A和B,A为主,B为从。前提是这两个数据库现在的表结构要一模一样,否则不成功。这个要锁表处理了。

  • 2018-04-19 16:32:47

    mysql binlog_do_db参数设置的坑

    在配置文件中想当然地配置成binlog_do_db=test,xx,jj,以为是三个库。结果无论什么操作都没有binlog产生