MongoDB (芒果)安装说明创建与插入数据

MongoDB (芒果)
一. 基础概念

  1. 数据: 能够输入到计算机中并被识别处理的信息集合
  2. 数据结构: 研究一个数据集合中,数据之间关系的学科
  3. 数据库: 按照数据结构,存储管理数据的仓库。数据仓库是在数据库管理系统管理控制下在一定介质中构建的。
  4. 数据管理系统 :数据库管理软件,用于维护建立数据库
  5. 数据库系统:是数据库和数据库管理系统等开发工具的集合

二. 关系型数据库 OR 非关系型数据库

  1. 关系型数据库 :采用关系模型(二维表)来组织数据结构的数据库

    【1】常见关系型数据库:Oracle DB2 SQLServer MySql SQLite

    【2】优缺点

       优点: * 逻辑清晰,容易理解,结构类似常见的表格
          * 使用sql语句操作,技术成熟,使用方便
          * 数据一致性高
          * 关系型数据库比较成熟,复杂的数据操作较多
    

    缺点: * 每次操作需要专门sql语句解析,降低了速度
    * 关系型数据库内部往往进行加锁处理,也影响了处理速度
    * 不能很好的处理海量数据并发请求的需要,读写能力差

  2. 非关系型数据库 (NoSql–》Not only sql)

    【1】 常见非关系型数据库

    1. 键值型数据库: Redis
    2. 列存储数据库: HBase
    3. 文档型数据库: Mongodb CouchDB
    4. 图形数据库: Graph

    【2】 优缺点

    优点: * 读写速度快,可以更好应对并发请求
    * 使用灵活,容易扩展

    缺点: * 没有sql那样同一的成熟的语句操作
    * 技术成熟度较差,缺少复杂的数据操作

    【3】 应用场景

    1. 对数据的格式要求比较灵活
    2. 对数据处理速度特别是并发情况下处理速度读要求较高
    3. 某些特定场景:做缓存等

三. MongoDB数据库

  1. 特点

    【1】 非关系型数据库,是文档型数据库
    【2】 开源数据库,使用广泛,更新较快
    【3】 由c++编写的数据库管理系统
    【4】 支持丰富的存储类型和数据操作
    【5】 方便扩展,部署,众多语言提供了操作接口

  2. MongoDB安装

    • Linux : sudo apt-get install mongodb

    • Mac OS : brew install mongodb

    • Windows :www.mongodb.com 下载软件安装

    Linux 安装目录

      安装位置:/var/lib/mongodb....
      配置文件:/etc/mongodb.conf
      命令集:/usr/bin
    

    cookie :
    环境变量 : 系统指定的查找路径。当加载一个文件时如果当前目录找不到会自动从环境变量目录查找

四. MongoDB 命令

  1. mongod 配置mongodb基本信息

    【1】 mongod -h 查看帮助信息
    【2】 mongod --port 8888 设置端口号
    【3】 mongod --dbpath [dir] 设置数据库存储路径

  2. mongo 进入数据库 mongoshell 界面

    【1】 mongo 进入mongoshell界面,即可操作数据库
    【2】 quit() crtl-c 退出界面

五. MongoDB 数据库数据结构

  1. 数据组织结构: 键值对 --> 文档 --> 集合 --> 数据库

    e.g.:

IDNAMEAGE
1Lily17
2Lucy18
     {
	"_id":1,
	"NAME":"Lily",
	"AGE":17
     },
     {
	"_id":2,
	"NAME":"Lucy",
	"AGE":18
     }
  1. 概念对比
mysqlmongodb含义
databasedatabase数据库
tablecollection表/集合
culumnfield字段/域
rowdocument记录/文档
indexindex索引

六. 数据库操作

  1. 创建数据库: use [database]

    e.g. 创建一个stu数据库
    use stu

    • use实际为选择使用哪个数据库,当这个数据库不存在时会自动创建

    • 使用use创建数据库不会立即创建,而是需要插入数据时才真正被创建

  2. 查看系统中数据库: show dbs

  3. 数据库命名规则

    【1】 使用utf-8字符
    【2】 不能含有: 空格 . / \ ‘\0’
    【3】 不超过64字节
    【4】 不要已有数据库重名

  4. 全局变量db : 代表当前正在使用的数据库

    • 如果不选择任何数据库则 db表示‘test’
  5. 删除数据库: db.dropDatabase()

  6. 数据库的备份和恢复

    【1】 数据库备份命令

      mongodump -h [host] -d [database] -o [path]
    
      e.g. 备份当前主机中stu数据库到bak目录下
           mongodump -h  localhost -d stu -o ./bak
    

    【2】 数据库恢复

      mongorestore -h [host:port] -d [db] [bak_dir]
     
     e.g. 将stu数据库恢复到当前主机中student数据库下
     mongorestore -h 127.0.0.1:27017 -d student  bak/stu
    
  7. 数据库监控

    1. 查看数据库运行状态: mongostat

      insertqueryupdatedelete每秒增查改删的次数

      command : 每秒mongo命令的执行次数
      flushes : 每秒的磁盘刷新频率
      vsize res:使用虚拟内容和物理内存情况
      time:时间

    2. 监控数据库中数据读写情况: mongotop

      ns数据集合
      total每秒读写时长
      read每秒读时长
      write每秒写时长

七. 集合操作

  1. 创建集合

    【1】 db.createCollection(collectionName)

    e.g. 创建集合class1
    db.createCollection(‘class1’)

    【2】 插入数据时,如果指定集合不存在会自动创建

     e.g.  如果class2不存在则自动创建
     db.class2.insert({'name':'宝强','age':32})
    

    【3】 查看数据库中集合: show collections

    【4】 集合命名规则:

    1. 使用utf-8字符
    2. 不能含有’\0’字符
    3. 不要以system.开头,这是系统集合默认开头
    4. 不要和关键字重名
  2. 删除集合: db.collection.drop()

    e.g. 删除class集合
    db.class.drop()

  3. 集合的重命名 : db.collection.renameCollection(newname)

    e.g. 将集合class重命名为class0
    db.class.renameCollection(‘class0’)

八. 文档

  1. 什么是文档?

    • 文档是mongodb数据库中基本的数据组织单元
    • 文档由多个键值对构成,每个键值对表达一个数据项
    • mongodb中文档数据实际为bson数据格式
  2. 文档键值对

    特点:

    • 文档中键值对是无序的
    • 文档中的键不能够重复
    • 文档通过键取值
    • 文档的键为utf-8格式,不能有\0

    键 : 表示文档的数据域,即数据的信息含义

    值 : 即数据库中存储的数据

    数据类型支持 : 见 图 mongo_type

    String 字符串
    Int 整型
    Double 浮点型
    Boolean 布尔类型 true false
    ObjectId ID对象

    • 在插入数据时,如果不自己指定_id域则会自动添加这个域,值为ObjectId数据,用于作为文档主键

    e.g.:
    “_id”:ObjectId(“5c95abfcc8c4cf7482cfbadd”)

  3. 集合中的文档设计

    【1】一个集合中的文档尽量表达相同的数据内容
    【2】集合中文档的层次嵌套不宜特别多,如果层次过多时考虑可否拆分为多个集合
    【3】集合中文档相互独立,可以根据实际情况选择不同的域结构

九. 数据基本操作

  1. 插入文档

    【1】 插入单个文档

    命令: db.collection.insertOne(doc)

    e.g. 向class0中插入一个文档
    db.class0.insertOne({‘name’:‘Lucy’,age:18,sex:‘w’})

    • 数据操作时,键可以不加引号,默认为utf-8字符串
    • 可以自己添加_id域,但是_id域的值不能重复

    【2】 插入多个文档

    命令:db.collection.insertMany([doc,...])
    
    e.g.  同时插入多条文档
    db.class0.insertMany([{name:'Abby',age:18,sex:'w'},{name:'Tom',age:17,sex:'m'}])
    

    【3】 一个综合函数

    命令: db.collection.insert()
    
    说明:综合insertOne,insertMany功能。官方不推荐
    

    【4】 save保存文档

    命令: db.collection.save()
    
    说明: 使用方法同insert(),但是当_id重复时会覆盖原有文档
    

补充 :

获取集合对象方法: db.getCollection(collectionName)

作业 :

  1. 能够回答关系型数据库和非关系型数据库的区别
  2. 熟练掌握mongo数据库,集合的创建和插入文档
  3. 将mysql中"银行"数据库结构使用mongodb创建,并插入对应文档。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值