mongoDB入门

基础信息
  相关网站
    www.mongodb.org
    www.mongoing.com
    docs.mongoing.com/manual-zh/
    www.github.com/mongodb
    jira.mongodb.org
  mangoDb的概念
    MangoDB
      特点
        无数据结构限制
        完全的索引支持
        方便的冗余与扩展
          复制集保证数据安全
          分片扩展数据规模
        完善的文档支持和驱动支持
      相关工具:
        环境:64位linux
        版本:
        ssh工具:xshell
        文本编辑器:vim与notepad++
      编译mongodb文件
        解压后执行scons all -j 12
    mongo
    索引
    集合
    复制集
    分片
    数据均衡
  MongoDB数据库搭建
    部署数据库
      搭建简单的单机服务
      搭建具有冗余容错功能的复制集
      搭建大规模数据集群
      完成集群的自动部署
  mongoDB的使用
    最基本的文档的读写更新删除
    不同类型索引的创建与使用
    复杂的聚合查询
    对数据集合进行分片,在不同分片间维持数据均衡
    数据备份与恢复
    数据迁移
  简单运维
    部署MongoDB集群
    处理多种常见的故障
      单节点失效,如何恢复工作
      数据库意外被杀死如何进行数据恢复
      数据库发生拒绝服务时如何排查原因
      数据库磁盘快满时如何处理
安装与配置
  mkdir mongodb_simple
  cd mongodb_simple
  mkdir data
  mkdir log
  mkdir conf
  mkdir bin
  配置文件
    port=12345
    dbpath=data
    logpath=log/mongod.log
    fork=true
  启动:./bin/mongod -f conf/mongod.conf
  连接数据库
    ./bin/mango 127.0.0.1:1234
  关闭数据库
    db.shutdownServer()
  查看日志
    tail -f log/mongod.log
数据库操作
  连接数据库
    .bin/mango 127.0.0.1:12345
  显示数据库
    show dbs
  使用数据库,没有则自动创建
    use imooc
  删除数据库
    db.dropDatabase()
  插入数据
    db.imooc_collection.insert({x:1})
    for(i=3;i<100,i++)db.imooc_collection.insert({x:i})
  显示表
    show collection
  查询
    db.imooc_collection.find()
    db.imooc_collection.find({x:1})
    db.imooc_collection.find().count()
    db.imooc_collection.find().skip(3).limit(2)sort({x:1})
  更新
    db.imooc_collectio.update({x:1},{x:999})
    db.imooc_collectio.update({z:100},{$set:{y:999}}) $set部分更新符
    db.imooc_collectio.update({z:100},{z:999},true) 改数据不存在则新增
    db.imooc_collectio.update({z:100},{$set{z:999}},false,true) 默认更新一条,这样之后更新多条
  删除remove
    db.imooc_collectio.remove({x:1})
  索引
    查看索引
      db.imooc_collectio.getIndexes()
    创建索引
      db.imooc_collectio.ensureIndex({x:1})
常见索引
  索引的种类
    _id索引
      自动生成唯一_id索引
    单键索引
      不会自动创建
      {x:1,y:2,z:3}
    多键索引
      与单键索引创建形式相同,区别在于字段的值
        单键索引:值为一个单一的值,如字符串,数字或日期
        多键索引:具有多个值,例如数组
    复合索引
      db.imooc_collectio.ensureIndex({x:1},{y:1})
    过期索引
      说明:

        在一段时间后会过期的索引
        索引过期后相应数据会删除
        登录信息、存储的日志等
      创建
        db.imooc_collectio.ensureIndex({x:1},{expreAfterSeconds:10})
      限制
        存储在过期索引字段的值必须为制定的时间类型
        如果制定了ISODate数组,则按照最小的时间进行删除
        过期索引不能是符合索引
        删除时间不精确
    全文索引
      说明:
        对字符串与字符串数组创建全文可搜索索引
      使用情况:
        {author:"",title:""}
      创建方法
        db.imooc_collectio.ensureIndex({k:"text"})
        db.imooc_collectio.ensureIndex({k_1:"text",k_2:"text"})
        db.imooc_collectio.ensureIndex({"$**":"text"})
      查询:
        db.imooc_collectio.find({$test:{$serch:'aa'}})
        db.imooc_collectio.find({$test:{$serch:'aa bb cc'}})空格代表或
        db.imooc_collectio.find({$test:{$serch:'aa bb -cc'}})-代表不包含cc
        db.imooc_collectio.find({$test:{$serch:"\"aa\",\"bb\""}})\代表或
      相似度
        {score:{$meta:"textScore"}}
        写在查询条件后面可以返回结果的相似度
        与sort一起使用,可达到很好的使用效果
      使用限制
        每次查询,只能指定一个$text查询
        $text查询不能出现在$nor查询中
        查询中包含$text,hint不再起作用
        不支持中文
      索引属性
        名字 name
          db.imooc_collectio.ensureIndex({},{name:"text"})
        唯一性 unique
          db.imooc_collectio.ensureIndex({},{unique:true/false})
        稀疏性 sparse
          db.imooc_collectio.ensureIndex({},{sparse:true/false})
            db.imooc_collectio.ensureIndex({m,{$exists:true}})
        是否定时删除:expreAfterSeconds
    地理位置索引
      概念:将一些点的位置存储在mongodb中,创建索引后,可以按照位置来查找其他点
      子分类:
        2D索引,用于存储和查找平面上的点
        2dsphere索引,用于存储和查找球面上的点
      查找方式
        查找距离某个点一定距离内的点
        查找包含在某区域内的点
      2d索引:
        创建:
            db.imooc_collectio.ensureIndex({w:"2d"})
        位置表示方式:经纬度
        取值范围:精度[-180,180],维度[-90,90]
      2dsphere索引
        创建:
          db.imooc_collectio.ensureIndex({w:"2dsphere"})
        位置表示方式:
          GeoJson:描述一个点,一条直线,多边形等
        格式:
          {type:"",coorddinates:[<coorddinates>]}
        查询方式
          $near:查询距离某个点最近的点,用$maxDistanse表示最远距离(2d索引不支持)
          $geoWithin:查询某个形状内的点
          geoNear查询:
            使用runCommand命令进行使用
          形状的表示
            矩形{$box:[[<x1>,<y1>],[<x2>,<y2>]}
            圆形{$center:[[<x1>,<y1>],r]}
            多边形{$polygon:[[<x1>,<y1>],[<x2>,<y2>],[<x2>,<y2>]}
索引构建情况分析
  优点
    加快索引相关查询
  缺点
    增加磁盘空间消耗,降低写入性能
  评判当前索引构建情况
    mongostat工具
      查看运行状态的程序
      使用说明:
        mongostat -h 127.0.0.1:12345
    profile工具
      db.getProfilingStatus()
      db.getProfilingLevel()
      db.setProfilingLevel()
      ...
      db.system.profile.find().sort({$natural:-1}).limit(1)
    日志
      配置verbose=vvvvv
    explain分析
      db.find({x:1}).explain()
mongoDB安全
  安全概览
    最安全的是物理隔离:不现实
    网络隔离
    防护墙隔离
    用户名密码
      auth=true开启权限
        创建用户|角色 User|Role
          createUser createRole
          用户角色详解
            数据库角色 read,readWrite,dbAdmin.dbOwner,userAdmin
            集群角色 clusterAdmin,clusterManager
            备份角色 backup,restore
            特殊权限 DBAdminAnyDatabase

posted @ 2018-11-13 16:13  井梅0709  阅读(136)  评论(0编辑  收藏  举报