您好,欢迎访问三七文档
银海MongoDB培训丁永华2014年5月目录MongoDB简介MongoDB特性MongoDB数据类型MongoDB工作方式MongoDB基础操作MongoDB简介MongoDB的名称取自“humongous”(巨大的)的中间部分。于2010年8月5日发布了最新的正式版本v1.6,这是其继1.0、1.2、1.4版本后的第四个主要稳定版本。由10gen公司为其提供商业支持。它是一个开源的、面向文档的数据库,属于nosql数据库中的一种它可运行在Linux、Windows或OSX平台,支持32位和64位应用并且提供了Java,PHP,Ruby,C#,C++,JavaScript等多种语言的驱动程序MongoDB特性面向文档存储,json格式的文档易读,高效。模式自由,支持动态查询、完全索引,无模式。高效的数据存储,效率提高。支持复制和故障恢复。以支持云级别的伸缩性,支持水平的数据库集群,可动态添加额外的服务器MongoDB特性适用场景:—适合作为信息基础设施的持久化缓存层。—适合实时的插入,更新与查询,并具备应用程序实时数据存储所需的复制及高度伸缩性。—Mongo的BSON数据格式非常适合文档化格式的存储及查询。不适用场景:—要求高度事务性的系统。—传统的商业智能应用。—复杂的跨文档(表)级联查询。MongoDB工作方式传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB同样也是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。在MongoDB中数据以单文档为单位存储,这样就能在单个数据对象中表示复杂的关系。文档可以由独立的基本类型属性、内嵌文档或文档数组组成。MongoDB存储的数据格式是key-value对的集合,键是字符串,值可以是数据类型集合里的任意类型,包括数组和文档对象。这种数据格式称作BSON,即“BinarySerializedDocumentNotation”,是一种类似JSON的二进制序列化文档。MongoDB工作方式MongoDB使用了内存映射文件进行数据管理,把所有空闲内存当缓存使用,且不能指定内存大小。这既是优点也是缺点:优点--可以最大限度提升性能;缺点--容易受其它程序干扰。数据空间采用预分配,目的是为了避免形成过多的硬盘碎片。它为每个数据库分配一系列文件,每个数据文件都会被预分配一个大小,第一个文件名字为“.0”,大小为64MB,第二个文件“.1”为128MB,依此类推,在32位模式运行时支持的最大文件为2GB。随着数据量的增加,可以在其数据目录里看到这些不断递增的文件。MongoDB数据类型null布尔ture|false整数123浮点12.3字符串“helloworld”对象ID用newObjectId()来申明。日期用newDate()来申明时间戳数组[“apple”,”blanan”,”pear”]内嵌文档{“username”:“jone”,“age”:13,“contact”:{“home”:”123”,”moblie”:”456”}}RegExp正则表达式/[a-z]/MongoDB安装启动—windows平台MongoDB是一个免安装的数据库,将它解压后生成一个bin目录(v1.6),其中包含10个可执行文件,除此之外不再需要任何其它的二进制依赖文件。通常情况下启动数据库只需要关注其中的两个可执行文件:mongod.exe和mongo.exe。前者是MongoDB数据库进程本身,是核心数据库服务器,后者是命令行Shell客户端,其使用方法通常类似于MySQL命令行Shell客户端,用于确保所有内容都已正常安装且能正常运行,并且可以对数据进行CRUD操作、执行管理任务等等。启动mongod--dbpathdb--port27017--directoryperdb--logpathdb/logs/mongodb.log--logappendMongoDB安装启动—linux平台解压#cpxx.tgz/usr/local#tarzxvfmongodb.tgz建立相应的数据库目录和日志目录#cd/usr/local/mongodb#mkdirdb#mkdirlogs启动mongodb#/usr/local/mongodb/bin/mongoddbpath=/usr/local/mongodb/db–logpath=/usr/local/mongodb/logs/mongo.log步骤4:安装相应的服务#vi/etc/rc.local添加/usr/local/mongodb/bin/mongod–dbpath=/usr/local/mongodb/db–logpath=/usr/local/mongodb/logs/mongo.logMongoDB启动参数mongod启动数据库进程--dbpath指定数据库的目录--port指定数据库的端口,默认是27017--bind_ip绑定IP--directoryperdb为每个db创建一个独立子目录--logpath指定日志存放目录--logappend指定日志生成方式(追加/覆盖)例如:mongod--dbpathdb--port27098--directoryperdb--logpathdb/logs/mongodb.log--logappendMongoDB基本操作—关闭数据库服务关闭数据有两种方式:在窗口模式中,可以直接使用Ctrl+C停止服务通过mongo连接至客户端,useadmin使用db.shutdownServer()停止服服务MongoDB基本操作—数据库管理创建数据库当use的时候,系统就会自动创建一个数据库。如果use之后没有创建任何集合。系统就会删除这个数据库。创建集合同样,当插入一个文档的时候,一个集合就会自动创建。使用mongo命令可以连接到数据库中,默认是连接到test的数据库。db.user.stats//查看collection的状态db.user.drop()dropthecollectiondb.cloneDatabase(fromhost)//克隆数据db.copyDatabase(fromdb,todb,fromhost)//复制数据库db.dropDatabase()//销毁数据库db.repairDatabase()db.shutdownServer()//关闭服务MongoDB基本操作—添加用户添加一个用户db.addUser(“portal”,”portalpass”)添加只读用户db.addUser(guest,passwordForGuest,true);添加一个认证db.auth(“portal”,”portalpass”)查看用户db.system.users.find();删除用户db.removeUser(username);db.system.users.remove({user:username});//同上登陆:mongoadmin-usys-psystem注:在用户数据库中添加的用户和认证只能管理用户自己的数据库。在admin数据库中创建的用户,可以管理所有数据库。MongoDB基本操作—创建并使用数据集创建数据集使用createCollection命令—使用db.createCollection(“mycoll”),或db.createCollection(“mycoll”,{size:100,max:1000})创建数据集注:命令区分大小写MongoDB常用命令showdbs//列出所有数据库usetest//使用数据库test,即使这个数据库不存在也可以执行,但该数据库不会立刻被新建,要等到执行了insert之类的操作时,才会建立这个数据库db//显示当前数据库db.stats()//查看数据库状态showcollections//列出当前数据库的所有文档showusers//列出用户注:想知道mongodb支持哪些命令,可以直接输入help、如果想知道当前数据库支持哪些方法,可以使用db.help()命令、如果想知道当前数据库下的表或者表collection支持哪些方法,可以使用命令db.dbname.help()MongoDB常用语法—添加添加操作添加普通数据使用db.collname.insert{…}db.c1.insert({_id:10,name:'tom',age:20});MongoDB常用语法—修改修改操作修改普通数据使用db.collname.update({…})db.c1.update({_id:0},{$set:{age:25}});MongoDB常用语法—删除删除操作删除数据使用db.collname.remvoe({…})命令可以按条件删除某条或多条数据db.c1.remove({_id:0});MongoDB常用语法—查询查询操作查询数据使用db.collname.find()MongoDB的查询语法很强大,很多SQL可以做的,它都可以做。计算集合的总记录数、分页查询、按条件查询、in查询、查询排序、动态查询等等。但不支持JOIN,这样带来的好处是数据更易于管理,消除了传统关系型数据库中影响性能和水平扩展性的“JOIN”操作MongoDB常用语法—查询SqlMongodbSELECT*FROMusersDb.users.find()SELECTa,bFROMusersDb.users.find({},{a:1,b:1})SELECT*FROMusersWHEREage=33Db.users.find({age:33})SELECTa,bFROMusersWHEREage=33Db.users.find({age:33},{a:1,b:1})SELECT*FROMusersWHEREage=33ORDERBYnameDb.users.find({age:33}).sort({name:1})SELECT*FROMusersWHEREage33Db.users.find({age:{“$gt”:33}})SELECT*FROMusersWHEREage!=33Db.users.find({age:{“$ne”:33}})SELECT*FROMusersWHEREnameLIKE%Joe%Db.users.find({name:”\Joe\”})SELECT*FROMusersWHEREnameLIKEJoe%Db.users.find({name:\^Joe\})SELECT*FROMusersWHEREage33ANDage=40Db.users.find({age:{“$gt”:33},age:{“lte”:40}})SELECT*FROMusersORDERBYnameDESCDb.user.find().sort({name:-1})SELECT*FROMusersWHEREa=1andb='q'Db.users.find({a:1,b:”q”})SELECT*FROMusersLIMIT10SKIP20Db.users.find().limit(10).skip(20)SELECT*FROMusersWHEREa=1orb=2db.users.find({$or:[{a:1},{b:2}]})SELECT*FROMusersLIMIT1Db.users.findOne()SELECTorder_idFROMorderso,order_line_itemsliWHEREli.order_id=o.order_idANDli.sku=12345db.orders.find({items.sku:12345},{_id:1})Selectcount(*)fromuser
本文标题:MongoDB培训
链接地址:https://www.777doc.com/doc-2888802 .html