mongodb技术专题讲座_第1页
mongodb技术专题讲座_第2页
mongodb技术专题讲座_第3页
mongodb技术专题讲座_第4页
mongodb技术专题讲座_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MongoDB技术专题讲座目录MongoDB简介MongoDB的安装配置启动连接MongoDBMongoDB的增删查改操作MongoDB的设计原那么1.MongoDB简介

MongoDB简介MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大局部功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。MongoDB的文档结构模型MongoDB的逻辑结构是一种层次结构。主要由:文档(document)、集合(collection)、数据库(database)这三局部组成的。MongoDB的文档〔document〕,相当于关系数据库中的一行记录。多个文档组成一个集合〔collection〕,相当于关系数据库的表。多个集合〔collection〕,逻辑上组织在一起,就是数据库〔database〕。一个MongoDB实例支持多个数据库〔database〕。2.MongoDB的安装配置Mongodb下载安装1、访问mongodb官网〔〕,下载自己系统关联版本。2.安装完后,创立数据库文件的存放位置,d:/MongoDB/data/db。创立日志文件存放位置,d:/MongoDB/data/log〔启动mongodb效劳之前需要必须创立数据库文件的存放文件夹,否那么命令不会自动创立,而且不能启动成功。〕3.启动mongodb效劳翻开cmd命令行,进入D:\mongodb\bin目录,输入如下的命令启动mongodb效劳:D:/mongodb/bin>mongod--dbpathD:\mongodb\data\dbmongodb默认连接端口27017,如果出现如图的情况,翻开://localhost:27017查看,如以下图那么表示连接成功,如果不成功,可以查看端口是否被占用。5、将MongoDB设置成Windows效劳,使得每次开机MongoDB自动启动。如图在d:\mongodb\data\log〔存放日志文件〕下新建文件mongodb.log用记事本翻开mongo.config输入:在d:\mongodb新建文件mongo.config,用管理员身份翻开cmd命令行,进入D:\mongodb\bin目录,输入如下的命令:mongod--configD:\mongodb\mongo.config--install--serviceName"MongoDB"翻开cmd输入services.msc查看效劳可以看到MongoDB效劳,点击可以启动。3.连接MongoDB使用客户端工具〔Robomongo〕下载Rongomongo进行安装。s:///download在启动之前,首先将MongoDB效劳启动起来。创立新的连接创立数据库使用客户端工具〔Robomongo〕4.MongoDB的增删查改操作新增操作语法:db.collectionName.insert(document);也可使用db.collectionName.save(document)命令。如果不指定_id字段save()方法类似于insert()方法。如果指定_id字段,那么会更新该_id的数据。注意:mongodb存储的是文档,文档是json格式的对象。比方操作user集合增加多个文档db.user.insert([{name:"孙1",gender:'boy',age:15},{name:"孙2",gender:'girl',age:16},{name:"孙3",gender:'boy',age:17},{name:"孙4",gender:'girl',age:18},{name:"孙5",gender:'boy',age:18},{name:"孙6",gender:'girl',age:17},{name:"孙7",gender:'boy',age:16},{name:"孙8",gender:'girl',age:15,hobby:[{lan:"java"},{game:"cs"}]},])删除操作语法:db.collectionName.remove(查询表达式,是否删除多条选项);选项是指{justOne:true/false},是否只删一行,默认为false.比方操作user集合(表).注意:1:查询表达式依然是个json对象2:查询表达式匹配的行,将被删掉.3:如果不写查询表达式,collections中的所有文档将被删掉.----------------------------------------------------------------------1:删除user集合中_id属性值为9527的文档。db.user.remove({_id:9527});2:删除user集合中gender属性为boy的文档〔默认删除多条数据〕。db.user.remove({gender:"boy"});3:删除user集合中gender属性为girl的文档,只删除1行。db.user.remove({gender:"girl"},true);查询操作语法:db.collectionName.find(查询表达式,查询的列)db.collectionName.find({key1:value1,key2:value2})---------AND条件db.collectionName.find({$or:[{key1:value1},{key2:value2}]})----or条件比方操作user集合(表).-------------------------------------------------------------------------1:查询所有user集合中文档的数据。db.user.find();2:查询user集合中所有的gender属性(_id属性默认总是查出来)。db.user.find({},{gender:true});3:查询user集合中所有的gender属性,且不查询_id属性。db.user.find({},{_id:false,gender:true});4:查询user集合中所有gender属性值为boy的文档中的name属性。db.user.find({gender:"boy"},{_id:false,name:true});5:查询user集合中所有gender属性值为boy并且年龄大于等于17的文档中的name属性。db.user.find({gender:"boy",age:{$gte:17}},{_id:false,name:true});更新操作语法:db.collection.update(查询条件,更新的数据,是否修改多条选项);db.collection.save(document);//通过传入的文档来替换已有文档比方操作user集合(表).-------------------------------------------------------------------------1:修改user集合中name为张三改成小王。db.user.update({name:"张三"},{name:"小王"});结果:文档中的其他列也不见了,改后只有_id和name列了——新文档直接替换了旧文档,而不是修改。如果是想修改文档的某列,可以用$set关键字db.user.update({name:"小王"},{$set:{name:"西门吹雪"}})2:修改user集合中所有name为王五的年龄修改为22岁。db.user.update({name:"王五"},{$set:{age:22}},{multi:true});5.MongoDB的设计原那么mongodb设计原那么1.一对一/一对很少one-to-few

〔可以采用内嵌文档

〕针对个人需要保存多个地址的情景,可以在person集合中嵌入address数组文档。person集合中{name:'张三',age:20,address:[{country:"中国",province:"山西省",city:"长治市"},{country:"中国",province:"山西省",city:"太原市"}]}优点:不需要单独执行一条语句去获取内嵌的内容缺点:无法把这些内嵌文档当做单独的实体去访问适用场合:一对很少且不需要单独访问内嵌内容mongodb数据库设计原那么2.一对许多〔但并不是很多〕one-to-many(中间引用〕一个人员组有很多人员Person集合-----------〔多〕{_id:ObjectID(12个字节组成)name:"张三"age:23}人员组集合------------〔一〕{name:"一组",persons:[ObjectID("aaaaa"),ObjectID("AAABBB").....]}适用场合:一对多且多的一端内容因为各种理由需要单独存在的情况下可以通过数组的方式引用多的一方的。mongodb数据库设计原那么3.一对非常多

one-to-squillions

父级引用〔mongodb每个文档的最大16M〕一个公司有非常多的员工Company集合〔一〕{_id:ObjectID("company01")name:"可为时代"}员工集合〔多〕{name:"张三",age:23,company:ObjectID("company01")}适用场合:一对非常多的情况下,请将一的那端引用嵌入进多的一端对象中。mongodb数据库设计原那么4.双向关联-----在one端和many端同时保存对方的引用person集合〔多〕{_id:ObjectID("person01"),name:"张三",age:23,group:ObjectID("group01")}group集合〔一〕{_id:ObjectID("group01"),name:"研发一组",persons:[ObjectID("person01")ObjectID("person02")]}优点:具有一对多的所有优点,同时在多的一方,可以很快找到少的一方缺点:更新时需要同时更新两个集合中的引用,不能使用原子性mongodb数据库设计原那么5.反范式反范式Many-<one

:冗余many端的数据到one端,即在one的一方保存many的引用集合反范式one-<many

:冗余one端

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论