10分钟学完Mongodb
《10分钟学完Mongodb》要点: 编程之家PHP培训学院每天发布《10分钟学完Mongodb》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 实际开发中,Mongodb的应用场景比较灵活,可以做缓存,也可以做主数据库,这取决于系统要求的应用性能与架构设计.今天我们来学习下Mongodb的相关知识,包含服务的启动与连接、数据库以及相关表的操作等.下述的截图都是我亲身测试过的,基本包含了mongodb操作的所有知识. 下载二进制文件放置在linux目录下 解压二进制文件,将文件夹重命名下,如,mongodb3.0.2,进入目录进入bin下,我们可以看到如下程序,说几个重点的: 返回上层目录,创建一个咱们本身的mongodb的文件夹,目录如下: 4个文件夹分别代表了:Bin 命令文件夹 ;data 数据库相关文件夹;Conf 配置文件夹 ; log 日志文件夹. 将mongo3.0.2中的bin目录下的mongod服务cp到maizuo-mongo的bin目录下待启动,此时我们进入conf文件夹下,vi mongod.conf文件,写入以下内容: Port 服务启动端口;dbpath数据库所在文件夹; logpath 日志存放位置 ;fork只在linux下有用 意味后台进城启动. 配置完成后,进入maizuo-mongo目录,使用命令./bin/mongod -f conf/mongod.conf 启动mongodb服务,输出如下内容表明服务启动成功. 下面,我们必要将源文件下的mongo命令cp到我们的maizuo-mongo的bin目录下,然后使用客户端连接mongodb服务,在这之前我们可以通过./bin/mongo --help命令看一下连接的命令: 由于我们当前未配置用户名和暗码 所以暂时不用关心[options]里的内容,使用命令./bin/mongo 127.0.0.1:12345连接mongodb: 我们发现它默认让我们连接的是test数据库 显示如上内容并出现>箭头,表示成功.可以使用db.shutdownServer()关闭mongodb服务. 第二部分:数据库和表相关操作 1、数据库相关 db 显示当前数据库 show dbs 显示所有数据库 use maizuo 切换到maizuo数据库 maizuo不存在 会在合适的时机自动创建 show collections 显示所有表名(在mongo里称之为集合) 2、插入 db.maizuo_users.insert({name:’lvpeng’}) 只能插入一条 For(int i=1;i<6;i++) db.maizuo_users.insert({name:i}) 插入多条 3、查询 db.maizuo_users.count() 查询表中有多少条数据 db.maizuo_users.find() 查询全部数据 db.maizuo_users.find({name:’lvpeng’}) 根据条件查询数据 支持中文 查询出来的数据 自带了_id属性 不过我们可以覆盖这个属性 db.maizuo_users.find().skip(2).limit(2).sort({name:1}) 查询数据 过滤前2条 只返回两条 并且依照name属性正向排序 4、更新 1、将姓名为lvpeng 的用户更新为xiaoxiong db.maizuo_users.update({name:’lvpeng’},{name:’xiaoxiong’}) 2、更新姓名为xiaoxiong 的用户设置它的年龄为23岁 使用$set 关键词 3、更新不存在的数据时,默认是不会执行成功的,但如果我们有类似的需求:在更新一条不存在的数据时,如果不存在,则insert进去,首先我们删掉name为xiaoxiong 的记录,然后执行更新,设置update办法的第三个参数为true 表明如果不存在则插入 4、默认只更新第一条数据,如果我们想所有符合条件的数据,必要设置update第4个参数: 5、删除 删除操作必需传递参数.与更新不同的是,默认删除所有复合条件的数据,例如: 删除表可以使用db.maizuo_users.drop(); 索引介绍 数据库大的时候 使用索引可以加快速度,通过getIndexes办法可以查询索引 使用ensureIndex办法 创建索引,其中1代表方向,需要注意的是集合里的数据过多时,创建索引会比较慢,原因你应该懂的.创建完成后,再次使用age作为条件查询,速度会加快. 第三部分:简单索引使用 1、id索引 _id默认的唯一索引 2、单键索引 最普通的索引,和id索引的区别是不会自动创建. 3、多键索引 单键索引的值为一个单一的值,多键索引具有多个值 4、复合索引 5、过期索引 (1)在一段时间后会过期的索引 (2)在索引过期后,对应的数据会被删除 (3)适合存储用户的登录数据或日志 (4)过期单位为秒,但有必定的误差. 需要注意的是:存储在过期索引字段的值必须是指定的时间类型ISODate或ISODate数组 否则不能被自动删除;如果为ISODate数组 则依照最小的时间删除,另外过期索引不能为复合索引.删除时间不精确,有一定误差,1分钟的定时任务进程. 第四部分:全文索引 创建办法: db.maizuo_users.ensureIndex({key:’text’}) text为固定的写法 意思为key字段上为全文索引 db.maizuo_users.ensureIndex({key1:’text’,key2:’text’}) 多字段的全文索引 db.maizuo_users.ensureIndex({‘$**’:’text’}) 所有字段的全文索引 1、全文索引创建 2、全文索引查询 首先插入两条测试数据 3、近似度查询 初始化数据 按之前的查询 加行score评分条件返回 依照score排序 4、全文索引的问题 (1)每次查询只能指定一个$text查询 (2)$text不能排除某些查询条件 (3)不支持中文,模糊也好像不支持 第五部分 地理位置索引 将一些点的位置存储在mongodb中,创建索引后,可以依照位置来查询其他点. 1、分类 2d索引 用于存储和查找平面上的点 2dsphere索引 用于存储和查找球面上的点 区别是计算方式的不同 2、查找方式 查询距离某个点一定距离内的点,查找包括在某个区域内的点 3、2d索引 Db.maizuo_seats_ensureIndex({w:’2d’});创建索引 位置表示方式:经纬度 取值范围:[-180,180] [-90,90] 4、$near 查询附近的点 $maxDistance最大距离 5、$geoWithin查询 查询某个形状内的点 (1)$box:矩形 {$box:[[x1,y1],[x2,y2]]} (2)$center:圆形 {$center:[[x1,r]} (3)$polygon:多边形 {$polygon[[x1,y2],[x3,y3]]} 6、$geoNear查询 $near的升级版 Db.runCommand( {geoNear:seats, Near:[2,2], minDistance: maxDistance: } ) 第六部分 性能评估和监控 1、mongostat工具 用于查询mongodb运行状态的程序 Mongostat -h 127.0.0.1:12345 2、Profile集合 修改level为2 profile会记录所有mongodb的操作 3、日志介绍 在mongod.conf配置文件里可以设置日志文件的详细级别 从1个v到5个v 日志在log目录下 4、Explain分析 针对一个查询的分析 第七部分 Mongodb平安 1、平安级别 (1)物理隔离 (2)网络隔离 (3)防火墙 (4)用户名暗码 2、权限开启 Auth true 和keyfile开启 3、创建用户 CreateUser({ User:’’, Pwd:’’ customData:’’, Roles:[{role:’roletype’,db:’’}] }) roleType: read readWrite dbAdmin dbOwner userAdmin 以上便是关于Mongodb的相关知识. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |