分享

mongoDB入门

 井梅 2018-09-25

mongoDB入门

一、        基础信息

1.     相关网站

1)     www.mongodb.org

2)     www.mongoing.com

3)     docs.mongoing.com/manual-zh/

4)     www.github.com/mongodb

5)     jira.mongodb.org

2.     mangoDb的概念

1)     MangoDB

A.     特点

a)     无数据结构限制

b)     完全的索引支持

c)     方便的冗余与扩展

                                                      i.          复制集保证数据安全

                                                    ii.          分片扩展数据规模

d)     完善的文档支持和驱动支持

B.     相关工具:

a)     环境:64linux

b)     版本:

c)     ssh工具:xshell

d)     文本编辑器:vimnotepad++

C.     编译mongodb文件

a)     解压后执行scons all -j 12

2)     mongo

3)     索引

4)     集合

5)     复制集

6)     分片

7)     数据均衡

3.     MongoDB数据库搭建

1)     部署数据库

A.     搭建简单的单机服务

B.     搭建具有冗余容错功能的复制集

C.     搭建大规模数据集群

D.    完成集群的自动部署

4.     mongoDB的使用

1)     最基本的文档的读写更新删除

2)     不同类型索引的创建与使用

3)     复杂的聚合查询

4)     对数据集合进行分片,在不同分片间维持数据均衡

5)     数据备份与恢复

6)     数据迁移

5.     简单运维

1)     部署MongoDB集群

2)     处理多种常见的故障

A.     单节点失效,如何恢复工作

B.     数据库意外被杀死如何进行数据恢复

C.     数据库发生拒绝服务时如何排查原因

D.    数据库磁盘快满时如何处理

二、        安装与配置

1.     mkdir mongodb_simple

2.     cd mongodb_simple

3.     mkdir data

4.     mkdir log

5.     mkdir conf

6.     mkdir bin 

7.     配置文件

1)     port=12345

2)     dbpath=data

3)     logpath=log/mongod.log

4)     fork=true

8.     启动:./bin/mongod -f conf/mongod.conf

9.     连接数据库

1)     ./bin/mango 127.0.0.1:1234

10.  关闭数据库

1)     db.shutdownServer()

11.  查看日志

1)     tail -f log/mongod.log

三、        数据库操作

1.     连接数据库

1)     .bin/mango 127.0.0.1:12345

2.     显示数据库

1)     show dbs

3.     使用数据库,没有则自动创建

1)     use imooc

4.     删除数据库

1)     db.dropDatabase()

5.     插入数据

1)     db.imooc_collection.insert({x:1})

2)     for(i=3;i<100,i++)db.imooc_collection.insert({x:i})

6.     显示表

1)     show collection

7.     查询

1)     db.imooc_collection.find()

2)     db.imooc_collection.find({x:1})

3)     db.imooc_collection.find().count()

4)     db.imooc_collection.find().skip(3).limit(2)sort({x:1})

8.     更新

1)     db.imooc_collectio.update({x:1},{x:999})

2)     db.imooc_collectio.update({z:100},{$set:{y:999}}) $set部分更新符

3)     db.imooc_collectio.update({z:100},{z:999},true) 改数据不存在则新增

4)     db.imooc_collectio.update({z:100},{$set{z:999}},false,true) 默认更新一条,这样之后更新多条

9.     删除remove

1)     db.imooc_collectio.remove({x:1})

10.  索引

1)     查看索引

A.     db.imooc_collectio.getIndexes()

2)     创建索引

A.     db.imooc_collectio.ensureIndex({x:1})

四、        常见索引

1.     索引的种类

1)     _id索引

A.     自动生成唯一_id索引

2)     单键索引

A.     不会自动创建

B.     {x:1,y:2,z:3}

3)     多键索引

A.     与单键索引创建形式相同,区别在于字段的值

a)     单键索引:值为一个单一的值,如字符串,数字或日期

b)     多键索引:具有多个值,例如数组

4)     复合索引

A.     db.imooc_collectio.ensureIndex({x:1},{y:1})

5)     过期索引

A.     说明

a)     在一段时间后会过期的索引

b)     索引过期后相应数据会删除

c)     登录信息、存储的日志等

B.     创建

a)     db.imooc_collection.ensureIndex({x:1},{expreAfterSeconds:10})

C.     限制

a)     存储在过期索引字段的值必须为制定的时间类型

b)     如果制定了ISODate数组,则按照最小的时间进行删除

c)     过期索引不能是符合索引

d)     删除时间不精确

6)     全文索引

A.     说明:

a)     对字符串与字符串数组创建全文可搜索索引

B.     使用情况:

a)     {author:"",title:""}

C.     创建方法

a)     db.imooc_collectio.ensureIndex({k:"text"})

b)     db.imooc_collectio.ensureIndex({k_1:"text",k_2:"text"})

c)     db.imooc_collectio.ensureIndex({"$**":"text"})

D.    查询:

a)     db.imooc_collectio.find({$test:{$serch:'aa'}})

b)     db.imooc_collectio.find({$test:{$serch:'aa bb cc'}})空格代表或

c)     db.imooc_collectio.find({$test:{$serch:'aa bb -cc'}})-代表不包含cc

d)     db.imooc_collectio.find({$test:{$serch:"\"aa\",\"bb\""}})\代表或

E.     相似度

a)     {score:{$meta:"textScore"}}

b)     写在查询条件后面可以返回结果的相似度

c)     sort一起使用,可达到很好的使用效果

F.     使用限制

a)     每次查询,只能指定一个$text查询

b)     $text查询不能出现在$nor查询中

c)     查询中包含$text,hint不再起作用

d)     不支持中文

G.    索引属性

a)     名字 name

                                                      i.          db.imooc_collectio.ensureIndex({},{name:"text"})

b)     唯一性 unique

                                                      i.          db.imooc_collectio.ensureIndex({},{unique:true/false})

c)     稀疏性 sparse

                                                      i.          db.imooc_collectio.ensureIndex({},{sparse:true/false})

                                                    ii.          db.imooc_collectio.ensureIndex({m,{$exists:true}})

d)     是否定时删除:expreAfterSeconds

7)     地理位置索引

A.     概念:将一些点的位置存储在mongodb中,创建索引后,可以按照位置来查找其他点

B.     子分类:

a)     2D索引,用于存储和查找平面上的点

b)     2dsphere索引,用于存储和查找球面上的点

C.     查找方式

a)     查找距离某个点一定距离内的点

b)     查找包含在某区域内的点

D.    2d索引:

a)     创建:

                                                      i.          db.imooc_collectio.ensureIndex({w:"2d"})

b)     位置表示方式:经纬度

c)     取值范围:精度[-180,180],维度[-90,90]

E.     2dsphere索引

a)     创建:

                                                      i.          db.imooc_collectio.ensureIndex({w:"2dsphere"})

b)     位置表示方式:

                                                      i.          GeoJson:描述一个点,一条直线,多边形等

c)     格式:

                                                      i.          {type:"",coorddinates:[<coorddinates>]}

F.     查询方式

a)     $near:查询距离某个点最近的点,用$maxDistanse表示最远距离(2d索引不支持)

b)     $geoWithin:查询某个形状内的点

c)     geoNear查询:

                                                      i.          使用runCommand命令进行使用

d)     形状的表示

                                                      i.          矩形{$box:[[<x1>,<y1>],[<x2>,<y2>]}

                                                    ii.          圆形{$center:[[<x1>,<y1>],r]}

                                                   iii.          多边形{$polygon:[[<x1>,<y1>],[<x2>,<y2>],[<x2>,<y2>]}

五、        索引构建情况分析

1.     优点

1)     加快索引相关查询

2.     缺点

1)     增加磁盘空间消耗,降低写入性能

3.     评判当前索引构建情况 

1)     mongostat工具

A.     查看运行状态的程序

B.     使用说明:

a)     mongostat -h 127.0.0.1:12345

2)     profile工具

A.     db.getProfilingStatus()

B.     db.getProfilingLevel()

C.     db.setProfilingLevel()

D.    ...

E.     db.system.profile.find().sort({$natural:-1}).limit(1)

3)     日志

A.     配置verbose=vvvvv

4)     explain分析

A.     db.find({x:1}).explain()

六、        mongoDB安全

1.     安全概览

1)     最安全的是物理隔离:不现实

2)     网络隔离

3)     防护墙隔离

4)     用户名密码

A.     auth=true开启权限

a)     创建用户|角色 User|Role

                                                      i.          createUser createRole

                                                    ii.          用户角色详解

a)     数据库角色 read,readWrite,dbAdmin.dbOwner,userAdmin

b)     集群角色 clusterAdmin,clusterManager

c)     备份角色 backup,restore

d)     特殊权限 DBAdminAnyDatabase

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多