Mongodb数据库中修改器$push和$addToSet的相同点和不同点
Mongodb数据库中修改器$push
和$addToSet
的相同点和不同点
对于Mongodb数据库而言,数据的修改会牵扯到内容的变更,结构的变更(数组的变更),所以Mongodb数据库设计的时候就提供了一系列修改器的应用。下面是我理解并总结的的其中两个修改器的相同点和不同点。
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":["数学","音乐"]}})
可以看到直接将数组追加到了课程中。$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的相同点和不同点相关推荐
- 利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析,最后将分析的结果做数据可视化
教程演示 创建爬虫项目 编写需要爬取的字段(items.py) 编写spider文件(wuyou.py) 编写数据库连接(pipelines.py) 编写反爬措施(settings.py) Mongo ...
- python爬取音乐并保存_python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
爬取TOP500的音乐信息,包括排名情况.歌曲名.歌曲时间. 网页版酷狗不能手动翻页进行下一步的浏览,仔细观察第一页的URL: 这里尝试将1改为2,再进行浏览,恰好是第二页的信息,再改为3,恰好是第三 ...
- Pandas的学习(读取mongodb数据库集合到DataFrame,将DataFrame类型数据保存到mongodb数据库中)
1.读取mongodb数据库集合到DataFrame import pymongo import pandas as pdclient = pymongo.MongoClient("数据库连 ...
- 如何将存储在MongoDB数据库中的数据导出到Excel中?
将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...
- mongodb数据库中插入数据
mongodb数据库中插入数据 一:connection 访问集合: 在mongodb数据库中,数据是存储在许多数据集合中,可以使用数据库对象的collection方法访问一个集合.该方法使用如下: ...
- 【Robo3T】为mongodb数据库中的表创建索引的步骤
[Robo3T]为mongodb数据库中的表创建索引的步骤 MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条 ...
- Scrapy框架学习 - 爬取豆瓣电影排行榜TOP250所有电影信息并保存到MongoDB数据库中
概述 利用Scrapy爬取豆瓣电影Top250排行榜电影信息,并保存到MongoDB数据库中 使用pymongo库操作MOngodb数据库 没有进行数据清洗 源码 items.py class Dou ...
- Python爬取起点小说并保存到本地文件夹和MongoDB数据库中
Python爬取起点小说并保存到本地MongoDB数据库中 工具:Python3.7 + Mongo4.0 + Pycharm """ 爬取起点小说<诡秘之主> ...
- mysql如何限制数据修改密码_MySQL_MySQL数据库中修改密码及访问限制设置详解,MySQL是一个真正的多用户、多 - phpStudy...
MySQL数据库中修改密码及访问限制设置详解 MySQL是一个真正的多用户.多线程SQL数据库服务器.MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序 ...
最新文章
- 转:Facebook是如何发布代码的
- pyqt tcp通信_实验十 基于PyQt界面的TCP通信程序(一).doc_学小易找答案
- 史上最具体Android集成QQ,微信,微博分享(不用第三方)持续更新中
- lower_bound和upper_bound算法
- export命令添加和删除环境变量
- Android互联网访问,get方式,post方式等方式
- 从SAP Leonardo到SAP Data Intelligence
- spring之二——使用maven创建一个java project
- 利用Service Fabric承载eShop On Containers
- 吴恩达深度学习 —— 4.2 深层网络中的前向传播
- 内容推荐策略产品经理的方法和实践
- 云桌面三大谎言之GPU虚拟化
- mac 备份android 手机通讯录导入iphone,iphone如何导出通讯录(轻松教你iPhone备份通讯录的方法)...
- Julia: 如何一次性insert Array{Any,2} to SQLite DB?
- nba球队查询系统c语言代码,NBA球队中英文对照一览表
- waterdrop连接inceptor
- “华硕zx50j,键盘背光灯无法显示,fn组合键不可用”解决办法
- 服务器外接显卡不显示,RE: power edge T620按照第二块显卡,不能正常工作,操作系统中查看驱动程序安装正常,工作正常,外接显示器无独立信号...
- Android中英文切换
- C语言之CoCo去过的城市