您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > MongoDB入门讲解
nosql数据库_MongoDB2015-10-02CONTENTS目录1234MongoDB简介MongoDB下载安装MongoDB应用GridFS存取数据机制6789服务器管理MongoDB总结MongoDB与mysql对比复制与分片5初步了解MongoDB,认识什么是mongoDB,为什么要用MongoDB,MongoDB特性第一节返回MongoDB简介什么是MongoDB?MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB的特点?高性能、易部署、易使用,存储数据非常方便MongoDB简介MongoDB主要功能特性?面向集合存储,易存储对象类型的数据。模式自由。支持动态查询。支持完全索引,包含内部对象。支持查询。支持复制和故障恢复。使用高效的二进制数据存储,大型对象(如视频等)。自动处理碎片,以支持云计算层次的扩展性支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。文件存储格式为BSON(一种JSON的扩展)可通过网络访问MongoDB简介使用原理所谓“面向集合”(Collenction-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(BinaryJSON)。MongoDB简介为什么要用MongoDB?MongoDB的设计是要结合键值存储和关系型数据库的最好特性。键值存储,因为非常简单,所以速度极快而且相对容易伸缩。关系型数据库较难伸缩,至少很难水平伸缩,但拥有富数据模型和强大的查询语言。如果MongoDB能介于两者之间,就能成为一款易伸缩、能存储丰富数据结构、提供复杂查询机制的数据库。在使用场景方面,MongoDB非常适合用做以下应用程序的主要数据存储:Web应用程序、分析与记录应用程序,以及任何要求有中等级别缓存的应用程序。此外,由于它能方便地存储无Schema数据,MongoDB还很适合保存事先无法知晓其数据结构的数据。了解如何获得MongoDB软件,包括如何为自己的环境选择正确的版本,如何在Windows和linux中安装和检测运行。第二节返回MongoDB下载安装选择正确版本?MongoDB所使用的版本管理相当简单:偶数号为稳定版,奇数号为开发版。注意:32位产品与64位产品之间的区别。32位和64位版本的数据库目前有着相同的功能,唯一的区别是:32位版本将每个服务器的数据集?????总大小限制在2GB左右;64位版本没有任何限制,所以在生产环境中应该优先使用64位版本。另外,不同的版本之间也有可能发生变化下载MongoDB?下载地址:安装MongoDB?在Linux中安装MongoDB,有两种方式:一、通过仓库安装MongoDB;二、手动安装MongoDB在Windows中安装MongoDB,只需要根据自己的需要下载安装包、解压后运行即可。MongoDB下载安装安装解压安装包后在mongodb下建立Data文件夹mongodb\data,然后分别建立db,log两个文件夹,至此mongodb下有以下文件夹mongodb\binmongodb\data\dbmongodb\data\log在log文件夹下创建一个日志文件MongoDB.log,mongodb\data\log\MongoDB.logMongoDB下载安装启动MongoDB?命令行方式启动:只需按照启动命令来执行就行了。配置文件方式启动:MongoDB也支持同mysql一样的读取启动配置文件的方式来启动数据库Daemon方式启动:启动MongoDB进程的session窗口不小心关闭时,MongoDB进程也将随之停止,MongoDB提供了一种后台Daemon方式启动的选择,只需加上一个”--fork”参数即可停止MongoDB?Control-C:通过Control-C的方式去停止MongoDB实例shutdownServer()指令:通过在admin库中发送db.shutdownServer()指令去停止MongoDB实例Unix系统指令:在找到实例的进程后,可能通过发送kill-2PID或kill-15PID来停止进程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:\mongodb\data\dblogpath=D:\mongodb\log\mongo.log进入bin目录下,输入mongod--config/mongodb/mongo.configMongoDB下载安装停止服务最稳妥的方式,处理完当前所有操作并将缓存的数据保存到磁盘上才停止useradmindb.shutdownServer();当然我们也可以直接关闭进程,但这种方式会导致缓存中的数据未急时刷新保存到磁盘上而丢失参数解释:--dbpath数据库路径(数据文件)--logpath日志文件路径--master指定为主机器--slave指定为从机器--source指定主机器的IP地址--logappend日志文件末尾添加MongoDB下载安装--pologSize指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的oplog大小是空闲磁盘大小的5%)。--port启用端口号--fork在后台运行--only指定只复制哪一个数据库--slavedelay指从复制检测的时间间隔--auth是否需要验证权限登录(用户名和密码)本节主要了解怎么运用MongoDB,包括其添加,修改,删除,查询,索引,聚合。本节将会是重点。第三节返回MongoDB应用名称说明db.collection.insert()在集合中创建一个新文档。db.collection.save()提供insert()和update()插入新文件的包装。db.collection.update()修改集合中的文档。db.collection.find()集合上执行查询,并返回一个游标对象。db.collection.findOne()执行查询,并返回一个单独的文档。db.collection.remove()从集合中删除的文件。db.collection.count()换行计数集合或匹配查询中返回的文档数的计数。db.collection.distinct()返回一个数组没有指定的字段不重复值的文件。MongoDB应用添加?添加有两种方式insert()与save()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({},{$push:{users:1}})向users数组末尾添加一个1元素db.foo.update({},{$push:{users:{“$each”:[1,2]}}})向users数组末尾添加多个元素,要$each配合使用$addToSet可以避免插入重复元素,配合$each使用,可以添加多个不同的值,数组修改器慢,因为文档大小可能会变$pop从头部或尾部删除元素$pull删除满足条件的元素,不止删除一个默认情况下,更新只能对符合匹配条件的第一个文档执行操作,要是多个文档符合条件,只有第一个文档会被更新,其他文档不会发生变化,要更新所有匹配的文档,可以将update的第四个参数设置为truedb.foo.update({},{$set:{name:'tes'}},false,true)在MongoDB找下级是按点的方式:比如user下有叫logs数组,就user.logsMongoDB应用修改?db.collection.update(query,update,upsert,multi)修改现有存在的文档或集合时使用。默认的update()方法值更新单个文档。但是如果multi参数设置为true,则更新操作可以更新全部符合条件的文档。Query–类型:文档;用于更新选择过滤。Update–类型:文档;需要更新的文档的内容。Upsert–类型:文档或boolean;设置为true时,当查询没有匹配到文档时进行新建。默认值为falseMulti:-类型:文档或boolean;设置为true时,则更新满足查询条件的所有文档(多个)。设置为false时只更新单个文档。默认为false。MongoDB应用名字说明$inc用来增加已有键的值,或者在键不存在时创建一个键。是专门来增加(和减少)数字的。只能用于整数、长整数或双精度浮点数。$rename重命名字段。新的字段名称不能和文档中现有的字段名相同。$setOnInsert执行insert操作时,操作给相应的字段赋值。$set用来指定一个键的值。如果这个键不存在,则创建它。$unset从文档中移除指定的键。MongoDB应用删除?db.collection.remove(query,justOne)Query–类型:文档;用于删除选择过滤。JustOne–类型:boolean;当设置为true时只删除一个文档。db.collection.remove({});删除collection中的所有数据,一旦删除不可恢复。但是不会删除collection;db.collection.drop();直接删除collection;去重?Distinct()db.collection.distinct(field,query)Field–类型:字符串;返回非重复的字段。Query–类型:文档;查询条件。db.user.distinct(_id,{age:1})MongoDB应用查询?db.collection.find(criteria,projection)find()返回的是一个文档集合;db.collection.findOne(criteria,projection
本文标题:MongoDB入门讲解
链接地址:https://www.777doc.com/doc-4883328 .html