美文网首页我爱编程
【慕课网课程笔记】MongoDB基础入门

【慕课网课程笔记】MongoDB基础入门

作者: 且须文雅 | 来源:发表于2018-08-04 09:40 被阅读0次

    课程目的

    • 熟悉MongoDB数据库各种概念
    • 学会MongoDB的搭建
    • 熟悉MongoDB的使用
    • 简单运维

    课程面向对象

    • 热爱学习的小白
    • 使用过一段时间MongoDB的工作人员

    MongoDB的概念

    1. MongoDB
    2. mongo
    3. 索引
    4. 集合
    5. 复制集
    6. 分片
    7. 数据均衡

    学会MongoDB的搭建

    部署数据库服务

    1. 搭建简单的单机服务
    2. 搭建具有冗余容错功能的复制集
    3. 搭建大规模数据集群
    4. 完成集群的自动部署

    熟悉MongoDB的使用

    最基本的文档读写更新删除
    各种不同类型的索引的创建与使用
    复杂的聚合查询
    对数据集合进行分片,在不同分片间维持数据均衡
    数据备份与恢复
    数据迁移

    简单运维

    部署MongoDB集群
    处理多种常见的故障
    |——单节点失效,如何恢复工作
    |——数据库意外被杀死如何进行数据恢复
    |——数据库发生拒绝服务时如何排查原因
    |——数据库磁盘快满时如何处理

    课程面向对象

    1. 热爱学习的小白
    2. 使用过一段时间MongoDB的工作人员

    初级 背景知识,基本操作
    中级 常见的部署操作,简单运维
    高级 介绍集群及大型集群的运维经验及mangoDB的实现原理、常见问题及解决办法

    如何运维一个几十T甚至上百T的数据库
    如何维持几十个甚至上百个节点的数据库均衡

    几个重要的网站

    1. MongoDB官网 www.mongodb.org
      安装包下载
      使用文档
    2. 国内官网:www.mongoing.com
    3. 中文MongoDB文档地址
      docs.mongoing.com
    4. github https://github.com/mongodb
      源码下载
    5. MongoDB的jira https://jira.mongodb.org
    6. 两个Google groups : mongodb-user和mongo-cn

    关于数据库

    数据库概念:

    1. 有组织地存放数据
    2. 按照不同的需求进行查询

    数据库的分类

    1. sql数据库:支持sql语言的数据库
      Oracle,MySQL...
    2. Nosql 数据库:不支持sql语言的数据库
      Redis,MongoDB
      Not only sql
    sql数据库 NoSql数据库
    实时一致性 简单便捷
    事务 方便扩展
    多表联合查询 更好的性能

    为什么选择MongoDB

    无数据结构限制

    1. 没有表结构的概念,每条记录可以有完全不同的结构
    2. 业务开发方便快捷
    3. sql数据库需要事先定义表结构再使用
    

    完全的索引支持

    1. redis 的key-value
    2. hbase 的单索引,二级索引需要自己实现
        单键索引,多键索引:{x:1,y:1}
        数据索引:["apple","lemon"]
        全文索引: "i am a little bird."(中文)
        地理位置索引:2D
    

    方便的冗余与扩展

    1. 复制集保证数据安全
    2. 分片扩展数据规模
    

    良好的支持

    1. 完善的文档
    2. 齐全的驱动支持
    

    MongoDB运行环境简介

    课程相关工具

    MongoDB环境 : 64位Linux
    MongoDB版本: 2.6.5
    ssh工具:xshell
    文本编辑器:vim 与 notepad++

    编译MongoDB文件

    搭建简单的MongoDB服务器

    创建 mongodb_simple 文件夹,进入:
    创建data 文件夹,保存数据
    创建 log 文件夹,保存log
    创建 conf 文件夹,存储配置文件
    创建 bin 文件夹,存储数据库的二进制文件
    将编译好的mongod程序复制到bin目录下。
    进入conf文件夹
    新建文件mongod.conf并编辑

    port = 12345
    dbpath = data
    logpath = log/mongod.log
    fork = true//启动后台进程,Windows中无效
    

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

    MongoDB的基本操作之数据写入和查询

    连接数据库
    mongo 127.0.0.1:12345
    查看数据库
    show dbs
    切换数据库(如果没有则创建):
    user dbname
    进入数据库后,删除数据库:
    db.dropDatabase()

    在MongoDB中,数据表称为集合
    往集合中插入数据:
    db.集合名.insert(JSONObject)
    在MongoDB中使用find进行查询:
    db.集合名.find()
    skip(Number) 跳过number条记录
    limit(Number) 限制显示number条数据
    sort({key:1}) 以key排序

    > db.test1.find().limit(3).sort({x:-1})
    { "_id" : ObjectId("5b65634af8dc39f7b75514af"), "x" : 5 }
    { "_id" : ObjectId("5b656347f8dc39f7b75514ae"), "x" : 4 }
    { "_id" : ObjectId("5b65633ff8dc39f7b75514ad"), "x" : 3 }
    > db.test1.find().limit(3).sort({x:1})
    { "_id" : ObjectId("5b655f5cf8dc39f7b75514ab"), "x" : 1 }
    { "_id" : ObjectId("5b65631cf8dc39f7b75514ac"), "x" : 2 }
    { "_id" : ObjectId("5b65633ff8dc39f7b75514ad"), "x" : 3 }
    

    MongoDB的基本操作之数据更新

    数据的更新:
    update(condition,newData)

    > db.test1.update({x:1},{x:99})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.test1.find()
    { "_id" : ObjectId("5b655f5cf8dc39f7b75514ab"), "x" : 99 }
    { "_id" : ObjectId("5b65631cf8dc39f7b75514ac"), "x" : 2 }
    { "_id" : ObjectId("5b65633ff8dc39f7b75514ad"), "x" : 3 }
    { "_id" : ObjectId("5b656347f8dc39f7b75514ae"), "x" : 4 }
    { "_id" : ObjectId("5b65634af8dc39f7b75514af"), "x" : 5 }
    

    更新部分数据,使用$set操作符:

    > db.test1.insert({x:1,y:2})
    WriteResult({ "nInserted" : 1 })
    > db.test1.update({x:1},{$set:{y:66}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.test1.find({x:1})
    { "_id" : ObjectId("5b6565e9f8dc39f7b75514b0"), "x" : 1, "y" : 66 }
    

    update的第三个参数ifInsert ,true/false
    指定在更新一条不存在的数据时是否自动插入数据,默认为false

    MongoDB的基本操作之更新多条数据

    在MongoDB中update默认只会更新第一条找到的数据
    update的第四个参数,multipleupdate,是否更新多条数据:默认为false
    在使用multipleupdate的时候,更新的数据只能用$set操作

    MongoDB的基本操作之数据删除

    remove() 接受一个参数,不允许不传递参数
    删除操作默认删除所有查找到的数据

    删除集合(表):
    db.表名.drop()

    MongoDB的基本操作之创建索引

    查看集合的索引情况:
    db.集合名.getIndexes()
    如果在集合的数据非常多时,不建立相应字段的索引,查询,会不返回结果
    创建索引:
    db.集合名.ensureIndex({key:1/-1})
    key为需要创建索引的字段,
    value代表方向,1代表正向排序,-1位逆向排序

    当负载较重时,不能直接使用这个命令,需要在使用数据库之前就建立好索引。

    本章总结

    1. 对数据库与MongoDB简要了解
    2. 熟悉课程环境
    3. 编译完成MongoDB所需的程序
    4. 搭建了简单的MongoDB服务器并进行了简单的使用
    5. 了解了索引的基本使用

    相关文章

      网友评论

        本文标题:【慕课网课程笔记】MongoDB基础入门

        本文链接:https://www.haomeiwen.com/subject/umbpvftx.html