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
      }
   }
)


  • 2021-02-03 17:13:58

    iOS - 封装静态库

    静态库:链接时完整的拷贝至可执行文件中,被多次使用就有多份冗余拷贝,.a的静态库 .framework的静态库

  • 2021-02-03 17:16:07

    iOS 中的动态库、静态库和 framework

    首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间。

  • 2021-02-03 17:17:53

    iOS 同一个工程下打包不同的app

    应用图标,启动画面,应用启动后的首页都不一样。 有些课程(例如公务员考试和高考)是有目标考试的概念,不同的目标考试大纲是不一样的。拿高考来举例,北京的高考和上海的高考,就有着完全不一样的考试大纲。高考的文科和理科,又有着完全不同的考试科目。 有些课程会有一些自定义的界面,例如高考的应用可以设置昵称,有些课程的真题练习中是有推荐真题模块的,而有些课程又没有。 有些课程有扫描答题卡功能,有些课程有考前冲刺功能,有些课程有大题专项查看功能,而有些课程又没有上述功能。另外还有一些微小细节,但是解决方法和类似,所以就不一一展开说明。

  • 2021-02-04 14:02:30

    window软件界面找不到了跑到屏幕外面去了

    一般可以这样操作,按Alt+空格,然后按M,然后用上下左右键把窗口移动到能看到的地方,再按回车。有些第三方的软件可能不能用,大部分都可以这样做。

  • 2021-02-04 14:08:13

    基于 Electron 的爬虫框架 Nightmare

    Electron 可以让你使用纯 JavaScript 调用 Chrome 丰富的原生的接口来创造桌面应用。你可以把它看作一个专注于桌面应用的 Node.js 的变体,而不是 Web 服务器。其基于浏览器的应用方式可以极方便的做各种响应式的交互,接下来介绍下关于 Electron 上衍生出的框架 Nightmare

  • 2021-02-04 20:13:02

    iOS framework制作及使用(包含xib和图片)

    静态库与动态库简介: 静态库:链接使用时完整地拷贝至可执行文件中 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次 本文制作framework对应xcode版本:10.1

  • 2021-02-11 15:53:08

    node缓存框架memory-cache

    无论是在 desktop, mobile or web哪一方面,Cache都常被我们用来提升程序性能。当处理web应用程序的时候,虽然可以使用当前所有浏览器都支持的响应头来进行客户端缓存,从而提升页面加载效率。但当一个内容非常繁杂的页面需要2s来进行HTML输出的时候,即使启用客户端缓存该页面,服务器仍然需要针对每一个来访用户进行页面渲染。想想一个大型的新闻门户网站首页,难道他们要针对每一个用户一遍又一遍地处理HTML吗?