天天看点

Mongodb学习笔记 -1

#目录

数据库基础

非关系型数据库的使用情况

MongoDB基础

MongoDB安装配置

查看Where命令

MongoDB配置命令

MongoD数据库组成结构

创建/选择数据库

系统数据库

数据库的命名规则

Mongo里面的指针

数据库备份

数据库恢复

数据库监测命令

删除数据库

集合的创建删除查看

集合重命名

文档(键。值)

集合设计原则

获取集合对象

文档操作

数据库基础

  • 基础
优点:
        数据组织结构化,降低了冗余
        提高了增删改查的效率
        便于扩展,方便程序调试做自动化处理
    缺点:
        数据库的使用专业性较强,相对比较复杂
    数据:
        能够输入到计算机中并被识别处理的信息集合
    数据结构:
        研究数据集合中,数据间关系的学科
    数据库:
        按照数据结构存储管理数据的仓库,是在数据管理软件管理和控制下创建在一定
        介质上的数据集合
    数据管理系统
        数据管理软件,用于维护管理数据库
    数据库系统
        由数据库,数据库管理系统,开发工具等组成的工具集合
           
  • 关系型数据库
特点:
        使用关系模型来组织数据结构的数据库(常见的:二维表)
        (Oracle Mysql sqlserver sqllite Sqlite)
    优点:
        1容易理解
        2使用方便
        3数据一致性高,冗余低,完整度好
        4技术成熟,可以使用外部连接等复杂操作
    缺点:
        1每次操作都需要sql语句解析,消耗较大
        2不能很好的满足并发需求,应对海量数据爆发力不足
        3关系型数据库内存存在大量加锁操作,读写能力受到限制
        4数据不够灵活,有时会导致结构复杂化
           
  • 非关系型数据库Nosql(not only sql)
有点:
        高并发,读写性强
        扩展性强,使用灵活
        弱化了数据结构,降低数据一致性
    缺点:
        通用性差,没有统一的操作语句
        操作灵活,容易冗余
        无复杂操作,版本更新快
           

##非关系型数据库的使用情况

1对数据一致性要求低时
    2处理海量数据并发
    3数据库大小不确定,要分布式扩展
    4给定的数据结构建立非关系模型更加容易
           

##非关系型数据库分类

键值数据库 Redis
    列存储数据库 
    文档数据库 MongoDb
    图形数据库
           

##MongoDB基础

非关系型数据库--》文档型数据库
    1 由C++编写的数据库管理系统
    2 支持丰富的增删该查功能
    3 支持丰富的数据类型
    4 支持众多的编程语言结构
    5 在Nosql中技术相对比较成熟
           

##Mongo安装配置

  • 自动安装
sodu apt-get install mongod
    默认安装路径
        /var/lib/mongodb
    配置文件
        etc/mongodb.conf
    环境变量(命令集):
        usr/local/bin
           
  • 手动安装
1 www.mongodb.com下载
    2 选择合适位置解压 解压后得到mongodb文件夹
    3 将文件夹下bin文件夹加入到环境变量
        PATH = $PATH:(bin地址,不要双引号不要这个括号)
        export PATH
        将以上两句写入 /etc/rc.local文件中
    4 重启系统
           

##查看Where命令

查看mongodb的配置文件

whereis mongodb

查看mongodb的安装位置

whereis mongo

##MongoDB配置命令

  • 设置数据库的存储位置
mongod --dbpath [目录]
           
  • 设置端口(默认端口27017)
mongod --port [端口号]
           
  • 进入mongo shell(mongodb的交互模式)
mongo
           
  • 退出Mongo shell
quit() 或者 ctrl+c
           

##MongoD数据库组成结构

键值对--》文档--》集合--》数据库
           
mysql          mongodb
    database        database
    table           collection
    column          field
    row             document
    index           index
           

##创建/选择数据库

use database

当选择的数据库不存在时,自动创建

存在时,选择使用

只有向数据库中插入数据时,数据库才会被真实创建出来,而use后不会马上创建

##系统数据库

admin:用来存放用户和权限

local:存放本地化数据

config:存储分片信息

##数据库的命名规则

1使用utf-8字符集

2不能含有

空格

.

/

\0

这些字符

3长度不能超过64字节

4不能和系统数据库重名

* 习惯上使用小写字母,表答数据库的含义
           

Mongo里面的指针

db:指向当前正在使用的数据库
           

Mongo数据库备份

命令:
    mongodump -h [所在主机] -d [数据库名字] -o [目标文件夹]
案例:
    mongodump -h 127.0.0.1 -d stu -o /home/tarena/bak
           

数据库恢复

mongorestore -h [主机]:[端口] -d [数据库名] [数据库文件路径]
注:如果数据库不存在,则新建这个数据库并存入数据
示例:
    mongorestore -h 127.0.0.1:27017 -d studnet bak/stu
           

数据库监测命令

  • mongostat
insert query update delete 每秒增删改查的次数
    command 每秒运行命令的次数
    flushes 每秒和磁盘交互的次数
    vsize 使用虚拟内存的大小
           
  • mongotop
检测每个数据的读写时长
    ns          total   read    write
    数据集合     总时长   读时长   写时长
           

删除数据库

删除db代表的数据库
    db.dropDatabase()
           

集合的创建删除查看

  • 创建集合
1 创建语句
        db.createCollection(collection_name)
    2 直接插入,如果集合不存在,则创建并插入
        db.集合名称.insert({...})
           
  • 查看集合
show collections
    show tables
    两种方法都行
           
  • 删除集合
db.集合名.drop()
           

集合的命名规则

1合法的utf-8字符串
    2不能有\0
    3不能以‘system.’开头
    4不能和关键字重复
           

集合重命名

db.集合名.renameCollection("new_name")
           

文档

mongodb中数据的组织形式 --》文档
    以键值对形式组成的类似于字典的数据结构组合,是对数据的一种描述
    
    键:文档的域
    值:数据
           
命名规则
        1 utf-8字符串
        2 不能有\0
        3 一个文档中的键不能重复
           
说明
        1 文档中键值对是有序的
        2 mongodb严格区分大小写
           
  • 值:

    即文档存储数据,也就是mongodb支持的数据类型

数据类型           数值
     整形             123-1-2-3
     bool            true false
     浮点型            1.23
     Array            [1,2,3]
     Timestamp        时间戳
     Date             时间日期
     Object           内部文档
     Null              None
     String            字符串
     Symbol            特殊字符串
     Binary data       二进制字符串
     code              代码
     regex             正则表达式
     ObjectId          ObjectId对象
           

##_id属性

如果插入文档时,没有设置_id域,则系统会自动添加该域作为主键
    值则是一个ObjectId类型24位16进制的数据,是为了保证_id值的唯一性
           
这24位分为:
        8位的文档创建时间
        6位的机器ID
        4位的进程id
        6位的计数器
           

集合中的文档

集合中的文档不一定域的个数相同
    集合中的文档不一定有相同的域
           

集合设计原则

1集合中的文档应该尽可能描述同一类内容,有更多相同的域
    2用一类数据信息,不要过多分散集合存放
    3集合中文档的层次不要包含太多(不要嵌套太多集合)
           

获取集合对象

db.getCollection("集合名称")
    等价于db.集合名称
    
    用法:
        db.getCollection("stu").insert/save....
           

文档的操作

  • 插入操作
db.collection.insert({...})
    db.collection.save({...})
    文档的键可以不加引号
    _id可以自己写,但是不能重复
           
插入多条文档(传列表)
        db.collection.insert([{..},{..},{..}])
        db.collection.save([{...},{...},{...}])
           
save 和 insert区别:
        当主键重复时save会覆盖,insert 会报错