MongoDB入门讲解教学课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《MongoDB入门讲解教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MongoDB 入门 讲解 教学 课件
- 资源描述:
-
1、nosqlnosql数据库数据库_MongoDB_MongoDB2015-10-021CONTENTS目录1 12 23 34 4MongoDBMongoDB简介简介MongoDBMongoDB下载安装下载安装MongoDBMongoDB应用应用GridFSGridFS存取数据机制存取数据机制6 67 78 89 9服务器管理服务器管理MongoDBMongoDB总结总结MongoDBMongoDB与与mysqlmysql对比对比复制与分片复制与分片5 52初步了解初步了解MongoDBMongoDB,认识什么是,认识什么是mongoDBmongoDB,为什么要用为什么要用MongoDBMon
2、goDB,MongoDBMongoDB特性特性第第 一一 节节返回返回3MongoDBMongoDB简介简介什么是MongoDB?MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB的特点?高性能、易部署、易使用,存储数据非常方便4MongoDBMongoDB简介简介MongoDB
3、主要功能特性?面向集合存储,易存储对象类型的数据。模式自由。支持动态查询。支持完全索引,包含内部对象。支持查询。支持复制和故障恢复。使用高效的二进制数据存储,大型对象(如视频等)。自动处理碎片,以支持云计算层次的扩展性 支持RUBY,PYTHON,JAVA,C+,PHP等多种语言。文件存储格式为BSON(一种JSON的扩展)可通过网络访问5MongoDBMongoDB简介简介使用原理所谓“面向集合”(Collenction-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念
4、类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary JSON)。6MongoDBMongoDB简介简介为什么要用MongoDB?MongoDB的设计是要结合键值存储和关系型数据库的最好特性。键值存储,因为非常简单,所以速
5、度极快而且相对容易伸缩。关系型数据库较难伸缩,至少很难水平伸缩,但拥有富数据模型和强大的查询语言。如果MongoDB能介于两者之间,就能成为一款易伸缩、能存储丰富数据结构、提供复杂查询机制的数据库。在使用场景方面,MongoDB非常适合用做以下应用程序的主要数据存储:Web应用程序、分析与记录应用程序,以及任何要求有中等级别缓存的应用程序。此外,由于它能方便地存储无Schema数据,MongoDB还很适合保存事先无法知晓其数据结构的数据。7了解如何获得了解如何获得MongoDBMongoDB软件,包括如何软件,包括如何为自己的环境选择正确的版本,如何在为自己的环境选择正确的版本,如何在Wind
6、owsWindows和和linuxlinux中安装和检测运行。中安装和检测运行。第第 二二 节节返回返回8MongoDBMongoDB下载安装下载安装选择正确版本?MongoDB所使用的版本管理相当简单:偶数号为稳定版,奇数号为开发版。注意:32 位产品与 64 位产品之间的区别。32 位和 64 位版本的数据库目前有着相同的功能,唯一的区别是:32 位版本将每个服务器的数据集总大小限制在 2GB左右;64 位版本没有任何限制,所以在生产环境中应该优先使用 64 位版本。另外,不同的版本之间也有可能发生变化下载MongoDB?下载地址:https:/www.mongodb.org/downlo
7、ads安装MongoDB?在Linux中安装MongoDB,有两种方式:一、通过仓库安装 MongoDB;二、手动安装MongoDB在Windows中安装MongoDB,只需要根据自己的需要下载安装包、解压后运行即可。9MongoDBMongoDB下载安装下载安装安装解压安装包后在mongodb 下建立Data文件夹 mongodbdata,然后分别建立db,log两个文件夹,至此mongodb下有以下文件夹 mongodbbin mongodbdatadb mongodbdatalog 在 l o g 文 件 夹 下 创 建 一 个 日 志 文 件 M o n g o D B.l o g,m
8、ongodbdatalogMongoDB.log10MongoDBMongoDB下载安装下载安装启动MongoDB?命令行方式启动:只需按照启动命令来执行就行了。配置文件方式启动:MongoDB也支持同mysql一样的读取启动配置文件的方式来启动数据库Daemon方式启动:启动MongoDB进程的session窗口不小心关闭时,MongoDB进程也将随之停止,MongoDB提供了一种后台Daemon方式启动的选择,只需加上一个”-fork”参数即可停止MongoDB?Control-C:通过Control-C的方式去停止MongoDB实例shutdownServer()指令:通过在admin库
9、中发送db.shutdownServer()指令去停止MongoDB实例Unix系统指令:在找到实例的进程后,可能通过发送kill-2 PID或kill-15 PID来停止进程 11MongoDBMongoDB下载安装下载安装命令启动命令启动进入到bin目录下,输入命令 ./mongod-dbpath=/usr/local/soft/mongodb/data-logpath=/usr/local/soft/mongodb/logs/MongoDB.log-logappend -auth -port=27017-fork配置文件启动配置文件启动在mongodb下创建mongo.config文件,
10、编辑mongo.config,输入 dbpath=D:mongodbdatadb logpath=D:mongodblogmongo.log 进入bin目录下,输入mongod-config/mongodb/mongo.config 12MongoDBMongoDB下载安装下载安装停止服务停止服务最稳妥的方式,处理完当前所有操作并将缓存的数据保存到磁盘上才停止 user admin db.shutdownServer();当然我们也可以直接关闭进程,但这种方式会导致缓存中的数据未急时刷新保存到磁盘上而丢失参数解释参数解释:-dbpath 数据库路径(数据文件)-logpath 日志文件路径 -
11、master 指定为主机器 -slave 指定为从机器 -source 指定主机器的IP地址 -logappend 日志文件末尾添加13MongoDBMongoDB下载安装下载安装 -pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。-port 启用端口号 -fork 在后台运行 -only 指定只复制哪一个数据库 -slavedelay 指从复制检测的时间间隔 -auth 是否需要验证权限登录(用户名和密码)14本节主要了解怎么运用本节主要了解怎么
12、运用MongoDBMongoDB,包括,包括其添加,修改,删除,查询,索引,聚其添加,修改,删除,查询,索引,聚合。本节将会是重点。合。本节将会是重点。第第 三三 节节返回返回15MongoDBMongoDB应用应用名称名称说明说明db.collection.insert()在集合中创建一个新文档。db.collection.save()提供insert()和update()插入新文件的包装。db.collection.update()修改集合中的文档。db.collection.find()集合上执行查询,并返回一个游标对象。db.collection.findOne()执行查询,并返回一个
13、单独的文档。db.collection.remove()从集合中删除的文件。db.collection.count()换行计数集合或匹配查询中返回的文档数的计数。db.collection.distinct()返回一个数组没有指定的字段不重复值的文件。16MongoDBMongoDB应用应用添加?添加有两种方式insert()与save()MongoDB是面向文档存储的数据库,文档结构形式叫BSON(类似JSON)db.c1.insert(name:user1);db.c1.save(_id:1,name:user1);他们两者之间的区别是:1、使用save函数里,如果原来的对象不存在,那他们
14、都插入数据,如果已经存在,save会调用update更新里面的记录,而insert则会忽略操作 2、insert可以一次性插入一个列表,而不用遍历,效率高,save则需要遍历列表,一个个插入。具体的看一下函数的源码。17MongoDBMongoDB应用应用数组操作?$push向文档数组中添加元素,如果没有该数组,则自动添加数组。db.foo.update(,$push:users:1)向users数组末尾添加一个1元素db.foo.update(,$push:users:“$each”:1,2)向users数组末尾添加多个元素,要$each 配合使用$addToSet 可以避免插入重复元素,配
15、合$each使用,可以添加多个不同的值,数组修改器慢,因为文档大小可能会变$pop从头部或尾部删除元素$pull删除满足条件的元素,不止删除一个默认情况下,更新只能对符合匹配条件的第一个文档执行操作,要是多个文档符合条件,只有第一个文档会被更新,其他文档不会发生变化,要更新所有匹配的文档,可以将update的第四个参数设置为truedb.foo.update(,$set:name:tes,false,true)在MongoDB找下级是按点的方式:比如user下有叫logs数组,就user.logs18MongoDBMongoDB应用应用修改?db.collection.update(,)修改现
16、有存在的文档或集合时使用。默认的update()方法值更新单个文档。但是如果multi参数设置为true,则更新操作可以更新全部符合条件的文档。Query 类型:文档;用于更新选择过滤。Update 类型:文档;需要更新的文档的内容。Upsert 类型:文档或boolean;设置为true时,当查询没有匹配到文档时进行新建。默认值为false Multi:-类型:文档或boolean;设置为true时,则更新满足查询条件的所有文档(多个)。设置为false时只更新单个文档。默认为false。19MongoDBMongoDB应用应用名字名字说明说明$inc用来增加已有键的值,或者在键不存在时创建
17、一个键。是专门来增加(和减少)数字的。只能用于整数、长整数或双精度浮点数。$rename重命名字段。新的字段名称不能和文档中现有的字段名相同。$setOnInsert执行insert操作时,操作给相应的字段赋值。$set用来指定一个键的值。如果这个键不存在,则创建它。$unset从文档中移除指定的键。20MongoDBMongoDB应用应用删除?db.collection.remove(query,justOne)Query 类型:文档;用于删除选择过滤。JustOne 类型:boolean;当设置为true时只删除一个文档。db.collection.remove();删除collectio
18、n中的所有数据,一旦删除不可恢复。但是不会删除collection;db.collection.drop();直接删除collection;去重?Distinct()db.collection.distinct(field,query)Field 类型:字符串;返回非重复的字段。Query 类型:文档;查询条件。db.user.distinct(_id,age:1)21MongoDBMongoDB应用应用查询?db.collection.find(,)find()返回的是一个文档集合;db.collection.findOne(,)findOne()返回的是一个文档前一个是查询条件,后一个参数
19、是显示的数据 查询操作符(Query Operators)可以让我们写出复杂查询条件,让我们使用的过程更加灵活。比较查询操作符$all 语法:field:$all:,.field:文档中键的名称(不使用双引号)。$gt 语法:field:$gt:value 匹配键值大于指定值的所有文档。22MongoDBMongoDB应用应用$gte 语法:field:$gte:value 匹配键值不小于指定值的所有文档。$lt 语法:field:$lt:value 匹配键值小于指定值的所有文档。$lte 语法:field:$lte:value 匹配键值不大于指定值的所有文档。$in 语法:field:$in
20、:,.匹配键值等于指定数组中任意值的文档。类似sql中in.$nin 语法:field:$nin:,.匹配键不存在或者键值不等于指定数组的任意值的文档。$ne 语法:field:$ne:value 匹配键值不等于指定值的文档。逻辑查询操作符逻辑查询操作符$and 语法:$and:,.,and指定一个至少包含两个表达式的数组,选择出满足该数组中所有表达式的文档。and操作符使用短路操作,若第一个表达式的值为“false”,余下的表达式将不会执行。$nor语法:$nor:,.$nor执行逻辑NOR运算,指定一个至少包含两个表达式的数组,选择出都不满足该数组中所有表达式的文档。$not语法:fiel
21、d:$not:$not执行逻辑NOT运算,选择出不能匹配表达式的文档,包括没有指定键的文档。$not操作符不能独立使用,必须跟其他操作一起使用(除$regex)。23MongoDBMongoDB应用应用$or语法:$or:,.,$or执行逻辑OR运算,指定一个至少包含两个表达式的数组,选择出至少满足数组中一条表达式的文档。元素查询操作符元素查询操作符$exists语法:field:$exists:如果$exists的值为true,选择存在该字段的文档;若值为false则选择不包含该字段的文档。如果该字段的值为null,$exists的值为true会返回该条文档,false则不返回。$mod 语
22、法:field:$mod:divisor,remainder 匹配字段值对(divisor)取模,值等于(remainder)的文档。$type语法:field:$type:选择字段值为指定的BSON数据类型的文档.使用下面类型对应的编号:24MongoDBMongoDB应用应用 类型类型名称名称编号编号类型类型名称名称编号编号Double 双精度1String 字符串2Object 对象3Array 数组4Binary data二进制对象 5Object id 对象id7Boolean布尔值 8Date 日期9Null 未定义10R e g u l a r Expression 正则表达式1
23、1JavaScript JavaScript代码13Symbol 符号14JavaScript JavaScript代码(带范围)1532-bit integer 32 位整数16Timestamp 时间戳1764-bit integer 64 位整数18Min key 最小键255Max key 最大键12725MongoDBMongoDB应用应用如果文档的键值是一个数组。那么$type将对数组里面的元素进行类型匹配而不是键值数组本身。JavaScript查询操作符$regex regex操作符查询中可以对字符串的执行正则匹配。MongoDB使用Perl兼容的正则表达式(PCRE)库来匹配正
24、则表达式.可以使用正则表达式对象或者regex操作符.db.inventory.find(name:/.4/i );db.inventory.find(name:$regex:.4,$options:i );http:/ 提供四个选项标志)i 如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。m 默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行).如果目标字符串 中没有 n字符,或者模式中没有出现“行首”/“行末”字符,设置这个修饰符不产生任何影响。s 如果设置了这个修饰符,模式中的点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行
展开阅读全文