MongoDB入门讲解.ppt
《MongoDB入门讲解.ppt》由会员分享,可在线阅读,更多相关《MongoDB入门讲解.ppt(55页珍藏版)》请在三一办公上搜索。
1、nosql数据库_MongoDB,2015-10-02,CONTENTS,目录,1,2,3,4,MongoDB简介,MongoDB下载安装,MongoDB应用,GridFS,存取数据机制,6,7,8,9,服务器管理,MongoDB总结,MongoDB与mysql对比,复制与分片,5,初步了解MongoDB,认识什么是mongoDB,为什么要用MongoDB,MongoDB特性,第 一 节,返回,MongoDB简介,什么是MongoDB?MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格
2、式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB的特点?高性能、易部署、易使用,存储数据非常方便,MongoDB简介,MongoDB主要功能特性?面向集合存储,易存储对象类型的数据。模式自由。支持动态查询。支持完全索引,包含内部对象。支持查询。支持复制和故障恢复。使用高效的二进制数据存储,大型对象(如视频等)。自动处理碎片,以支持云计算层次的扩展性 支持RUBY,PYTHON,JAVA,C+,PHP等多种语言。文件存储格式为BSON(
3、一种JSON的扩展)可通过网络访问,MongoDB简介,使用原理所谓“面向集合”(Collenction-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档,被存储为键-值对的形式。键用
4、于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary JSON)。,MongoDB简介,为什么要用MongoDB?MongoDB的设计是要结合键值存储和关系型数据库的最好特性。键值存储,因为非常简单,所以速度极快而且相对容易伸缩。关系型数据库较难伸缩,至少很难水平伸缩,但拥有富数据模型和强大的查询语言。如果MongoDB能介于两者之间,就能成为一款易伸缩、能存储丰富数据结构、提供复杂查询机制的数据库。在使用场景方面,MongoDB非常适合用做以下应用程序的主要数据存储:Web应用程序、分析与记录应用程序,以及任何要求有中等级别缓存的应用程
5、序。此外,由于它能方便地存储无Schema数据,MongoDB还很适合保存事先无法知晓其数据结构的数据。,了解如何获得MongoDB软件,包括如何为自己的环境选择正确的版本,如何在Windows和linux中安装和检测运行。,第 二 节,返回,MongoDB下载安装,选择正确版本?MongoDB所使用的版本管理相当简单:偶数号为稳定版,奇数号为开发版。注意:32 位产品与 64 位产品之间的区别。32 位和 64 位版本的数据库目前有着相同的功能,唯一的区别是:32 位版本将每个服务器的数据集总大小限制在 2GB左右;64 位版本没有任何限制,所以在生产环境中应该优先使用 64 位版本。另外,
6、不同的版本之间也有可能发生变化下载MongoDB?下载地址:安装MongoDB?在Linux中安装MongoDB,有两种方式:一、通过仓库安装 MongoDB;二、手动安装MongoDB在Windows中安装MongoDB,只需要根据自己的需要下载安装包、解压后运行即可。,MongoDB下载安装,安装解压安装包后在mongodb 下建立Data文件夹 mongodbdata,然后分别建立db,log两个文件夹,至此mongodb下有以下文件夹 mongodbbin mongodbdatadb mongodbdatalog 在log文件夹下创建一个日志文件MongoDB.log,mongodbd
7、atalogMongoDB.log,MongoDB下载安装,启动MongoDB?命令行方式启动:只需按照启动命令来执行就行了。配置文件方式启动:MongoDB也支持同mysql一样的读取启动配置文件的方式来启动数据库Daemon方式启动:启动MongoDB进程的session窗口不小心关闭时,MongoDB进程也将随之停止,MongoDB提供了一种后台Daemon方式启动的选择,只需加上一个”-fork”参数即可停止MongoDB?Control-C:通过Control-C的方式去停止MongoDB实例shutdownServer()指令:通过在admin库中发送db.shutdownServ
8、er()指令去停止MongoDB实例Unix系统指令:在找到实例的进程后,可能通过发送kill-2 PID或kill-15 PID来停止进程,MongoDB下载安装,命令启动进入到bin目录下,输入命令./mongod-dbpath=/usr/local/soft/mongodb/data-logpath=/usr/local/soft/mongodb/logs/MongoDB.log-logappend-auth-port=27017-fork配置文件启动在mongodb下创建mongo.config文件,编辑mongo.config,输入 dbpath=D:mongodbdatadb lo
9、gpath=D:mongodblogmongo.log 进入bin目录下,输入mongod-config/mongodb/mongo.config,MongoDB下载安装,停止服务最稳妥的方式,处理完当前所有操作并将缓存的数据保存到磁盘上才停止 user admin db.shutdownServer();当然我们也可以直接关闭进程,但这种方式会导致缓存中的数据未急时刷新保存到磁盘上而丢失参数解释:-dbpath 数据库路径(数据文件)-logpath 日志文件路径-master 指定为主机器-slave 指定为从机器-source 指定主机器的IP地址-logappend 日志文件末尾添加,
10、MongoDB下载安装,-pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。-port 启用端口号-fork 在后台运行-only 指定只复制哪一个数据库-slavedelay 指从复制检测的时间间隔-auth 是否需要验证权限登录(用户名和密码),本节主要了解怎么运用MongoDB,包括其添加,修改,删除,查询,索引,聚合。本节将会是重点。,第 三 节,返回,MongoDB应用,MongoDB应用,添加?添加有两种方式insert()与save()
11、MongoDB是面向文档存储的数据库,文档结构形式叫BSON(类似JSON)db.c1.insert(name:user1);db.c1.save(_id:1,name:user1);他们两者之间的区别是:1、使用save函数里,如果原来的对象不存在,那他们都插入数据,如果已经存在,save会调用update更新里面的记录,而insert则会忽略操作 2、insert可以一次性插入一个列表,而不用遍历,效率高,save则需要遍历列表,一个个插入。具体的看一下函数的源码。,MongoDB应用,数组操作?$push向文档数组中添加元素,如果没有该数组,则自动添加数组。db.foo.update(,
12、$push:users:1)向users数组末尾添加一个1元素db.foo.update(,$push:users:“$each”:1,2)向users数组末尾添加多个元素,要$each 配合使用$addToSet 可以避免插入重复元素,配合$each使用,可以添加多个不同的值,数组修改器慢,因为文档大小可能会变$pop从头部或尾部删除元素$pull删除满足条件的元素,不止删除一个默认情况下,更新只能对符合匹配条件的第一个文档执行操作,要是多个文档符合条件,只有第一个文档会被更新,其他文档不会发生变化,要更新所有匹配的文档,可以将update的第四个参数设置为truedb.foo.update
13、(,$set:name:tes,false,true)在MongoDB找下级是按点的方式:比如user下有叫logs数组,就user.logs,MongoDB应用,修改?db.collection.update(,)修改现有存在的文档或集合时使用。默认的update()方法值更新单个文档。但是如果multi参数设置为true,则更新操作可以更新全部符合条件的文档。Query 类型:文档;用于更新选择过滤。Update 类型:文档;需要更新的文档的内容。Upsert 类型:文档或boolean;设置为true时,当查询没有匹配到文档时进行新建。默认值为false Multi:-类型:文档或boo
14、lean;设置为true时,则更新满足查询条件的所有文档(多个)。设置为false时只更新单个文档。默认为false。,MongoDB应用,MongoDB应用,删除?db.collection.remove(query,justOne)Query 类型:文档;用于删除选择过滤。JustOne 类型:boolean;当设置为true时只删除一个文档。db.collection.remove();删除collection中的所有数据,一旦删除不可恢复。但是不会删除collection;db.collection.drop();直接删除collection;去重?Distinct()db.colle
15、ction.distinct(field,query)Field 类型:字符串;返回非重复的字段。Query 类型:文档;查询条件。db.user.distinct(_id,age:1),MongoDB应用,查询?db.collection.find(,)find()返回的是一个文档集合;db.collection.findOne(,)findOne()返回的是一个文档前一个是查询条件,后一个参数是显示的数据 查询操作符(Query Operators)可以让我们写出复杂查询条件,让我们使用的过程更加灵活。比较查询操作符$all 语法:field:$all:,.field:文档中键的名称(不使
16、用双引号)。$gt 语法:field:$gt:value 匹配键值大于指定值的所有文档。,MongoDB应用,$gte 语法:field:$gte:value 匹配键值不小于指定值的所有文档。$lt 语法:field:$lt:value 匹配键值小于指定值的所有文档。$lte 语法:field:$lte:value 匹配键值不大于指定值的所有文档。$in 语法:field:$in:,.匹配键值等于指定数组中任意值的文档。类似sql中in.$nin 语法:field:$nin:,.匹配键不存在或者键值不等于指定数组的任意值的文档。$ne 语法:field:$ne:value 匹配键值不等于指定值
17、的文档。逻辑查询操作符$and 语法:$and:,.,and指定一个至少包含两个表达式的数组,选择出满足该数组中所有表达式的文档。and操作符使用短路操作,若第一个表达式的值为“false”,余下的表达式将不会执行。$nor语法:$nor:,.$nor执行逻辑NOR运算,指定一个至少包含两个表达式的数组,选择出都不满足该数组中所有表达式的文档。$not语法:field:$not:$not执行逻辑NOT运算,选择出不能匹配表达式的文档,包括没有指定键的文档。$not操作符不能独立使用,必须跟其他操作一起使用(除$regex)。,MongoDB应用,$or语法:$or:,.,$or执行逻辑OR运算
18、,指定一个至少包含两个表达式的数组,选择出至少满足数组中一条表达式的文档。元素查询操作符$exists语法:field:$exists:如果$exists的值为true,选择存在该字段的文档;若值为false则选择不包含该字段的文档。如果该字段的值为null,$exists的值为true会返回该条文档,false则不返回。$mod 语法:field:$mod:divisor,remainder 匹配字段值对(divisor)取模,值等于(remainder)的文档。$type语法:field:$type:选择字段值为指定的BSON数据类型的文档.使用下面类型对应的编号:,MongoDB应用,M
19、ongoDB应用,如果文档的键值是一个数组。那么$type将对数组里面的元素进行类型匹配而不是键值数组本身。JavaScript查询操作符$regex regex操作符查询中可以对字符串的执行正则匹配。MongoDB使用Perl兼容的正则表达式(PCRE)库来匹配正则表达式.可以使用正则表达式对象或者regex操作符.db.inventory.find(name:/.4/i);db.inventory.find(name:$regex:.4,$options:i);,MongoDB应用,options(regex 提供四个选项标志)i 如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。
20、m 默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行).如果目标字符串 中没有 n字符,或者模式中没有出现“行首”/“行末”字符,设置这个修饰符不产生任何影响。s 如果设置了这个修饰符,模式中的点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符。x 如果设置了这个修饰符,模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略,并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略。这个修饰符使被编译模式中可以包含注释。注意:这仅用于数据字符。空白字符 还是不能在模式的特殊字符序列中出现,比如序列。注:JavaScri
21、pt只提供了i和m选项,x和s选项必须使用$regex操作符。$where$where操作符功能强大而且灵活,他可以使用任意的JavaScript作为查询的一部分,包含JavaScript表达式的字符串或者JavaScript函数。最典型的应用就是比较文档中的两个键的值是否相等.,MongoDB应用,索引?在MongoDB上,索引能提高读操作和查询性能,没有索引,mongoDB必须扫描集合中的每一个文档,然后选择与查询条件匹配的文档。索引的管理创建索引命令 db.foo.ensureIndex(“x”:1,“y”:-1)使用ensureIndex来创建索引,1为升序,-1为倒序 db.test
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MongoDB 入门 讲解
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5440425.html