Mongodb数据库中修改器$push$addToSet的相同点和不同点


对于Mongodb数据库而言,数据的修改会牵扯到内容的变更,结构的变更(数组的变更),所以Mongodb数据库设计的时候就提供了一系列修改器的应用。下面是我理解并总结的的其中两个修改器的相同点和不同点。

1.相同点

  1. $push表示向指定的成员中追加内容(基本上都是数组),
    语法结构为:${'$push':{'成员':内容}}
    范例:向姓名为小七学生的课程中增加美术课程

    db.students.update({"name":"小七"},{"$push":{"course":"美术"}})

    在进行数据修改前,先查看姓名为小七的数据:

    db.students.find({"name":"小七"}).pretty()

    结果显示如下:

    然后执行修改数据操作

    可以看见原先小七数据中没有课程,执行修改操作后多了course数据。就说明,如果没有数组就重新创建数组。那么如果有数组后再执行操作了?

    db.students.update({"name":"小七"},{"$push":{"course":"舞蹈"}})


    可以看出如果有,就直接数组内追加数据内容。
    那么如果添加的内容是一个数组呢,又会出现什么样的结果?

    db.students.update({"name":"小七"},{"$push":{"course":["数学","音乐"]}})


    可以看到直接将数组追加到了课程中。

  2. $addToSet也表示向指定的成员中追加内容(与$push相似)。
    语法结构:${"$addToSet":{"成员":内容}}
    如果执行以上代码,其结构是一样的,大家可以自己试试。

2.不同点

但是两者是有区别的,$push是不进行数据过滤的,而$addToSet是进行数据过滤,简单的说就是$push不管你有没有,只要执行,就将内容追加到数组后面,而$addToSet看数组中有没有要追加的内容,如果有就不再追加,如果没有就进行追加。

为了方便看结果,先执行下面代码

db.students.update({"name":"小七"},{"$addToSet":{"course":"美术"}})


可以看到执行代码后,数据内容没有在数组中追加,获取有人会说是不是$addToSet不管用呢,那么再执行下面的代码,看结果

db.students.update({"name":"小七"},{"$addToSet":{"course":"音乐"}})


可以看到数据追加到数组中。
接下来执行$push代码

db.students.update({"name":"小七"},{"$push":{"course":"美术"}})


可以看到之前小七的课程中就有美术课程,但执行了$push代码后,依然将美术课程追加到课程数组后。

Mongodb数据库中修改器$push和$addToSet的相同点和不同点相关推荐

  1. 利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析,最后将分析的结果做数据可视化

    教程演示 创建爬虫项目 编写需要爬取的字段(items.py) 编写spider文件(wuyou.py) 编写数据库连接(pipelines.py) 编写反爬措施(settings.py) Mongo ...

  2. python爬取音乐并保存_python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

    爬取TOP500的音乐信息,包括排名情况.歌曲名.歌曲时间. 网页版酷狗不能手动翻页进行下一步的浏览,仔细观察第一页的URL: 这里尝试将1改为2,再进行浏览,恰好是第二页的信息,再改为3,恰好是第三 ...

  3. Pandas的学习(读取mongodb数据库集合到DataFrame,将DataFrame类型数据保存到mongodb数据库中)

    1.读取mongodb数据库集合到DataFrame import pymongo import pandas as pdclient = pymongo.MongoClient("数据库连 ...

  4. 如何将存储在MongoDB数据库中的数据导出到Excel中?

    将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...

  5. mongodb数据库中插入数据

    mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...

  6. 【Robo3T】为mongodb数据库中的表创建索引的步骤

    [Robo3T]为mongodb数据库中的表创建索引的步骤 MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条 ...

  7. Scrapy框架学习 - 爬取豆瓣电影排行榜TOP250所有电影信息并保存到MongoDB数据库中

    概述 利用Scrapy爬取豆瓣电影Top250排行榜电影信息,并保存到MongoDB数据库中 使用pymongo库操作MOngodb数据库 没有进行数据清洗 源码 items.py class Dou ...

  8. Python爬取起点小说并保存到本地文件夹和MongoDB数据库中

    Python爬取起点小说并保存到本地MongoDB数据库中 工具:Python3.7 + Mongo4.0 + Pycharm """ 爬取起点小说<诡秘之主> ...

  9. mysql如何限制数据修改密码_MySQL_MySQL数据库中修改密码及访问限制设置详解,MySQL是一个真正的多用户、多 - phpStudy...

    MySQL数据库中修改密码及访问限制设置详解 MySQL是一个真正的多用户.多线程SQL数据库服务器.MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序 ...

最新文章

  1. 转:Facebook是如何发布代码的
  2. pyqt tcp通信_实验十 基于PyQt界面的TCP通信程序(一).doc_学小易找答案
  3. 史上最具体Android集成QQ,微信,微博分享(不用第三方)持续更新中
  4. lower_bound和upper_bound算法
  5. export命令添加和删除环境变量
  6. Android互联网访问,get方式,post方式等方式
  7. 从SAP Leonardo到SAP Data Intelligence
  8. spring之二——使用maven创建一个java project
  9. 利用Service Fabric承载eShop On Containers
  10. 吴恩达深度学习 —— 4.2 深层网络中的前向传播
  11. 内容推荐策略产品经理的方法和实践
  12. 云桌面三大谎言之GPU虚拟化
  13. mac 备份android 手机通讯录导入iphone,iphone如何导出通讯录(轻松教你iPhone备份通讯录的方法)...
  14. Julia: 如何一次性insert Array{Any,2} to SQLite DB?
  15. nba球队查询系统c语言代码,NBA球队中英文对照一览表
  16. waterdrop连接inceptor
  17. “华硕zx50j,键盘背光灯无法显示,fn组合键不可用”解决办法
  18. 服务器外接显卡不显示,RE: power edge T620按照第二块显卡,不能正常工作,操作系统中查看驱动程序安装正常,工作正常,外接显示器无独立信号...
  19. Android中英文切换
  20. C语言之CoCo去过的城市

热门文章

  1. 三星SideSync下载,一个神奇的软件_我是亲民_新浪博客
  2. eps导入坐标文件_放样坐标(dat文件)快速导入GPS手簿(DC文件)的方法
  3. OpenGL基础图形编程(一)
  4. 小白遇见Servlet
  5. 无心剑2022年七绝130首
  6. python和matlab编程 pdf,跟老齐学Python 从入门到精通pdf
  7. web 集成高德地图
  8. MapReduce编程实例
  9. 向最优秀的人学习:大自然如何激发人工智能研究
  10. iPhone X Fold折叠概念机:惊艳不输三星华为 果粉看了忍不住