MongoDB
一.基础概念
1.数据:能够输入到计算机中并被识别处理的信息集合
2.数据结构:研究一个数据集合中,数据之间关系的学科
3.数据库:按照数据结构,存储管理数据的仓库,数据仓库是在数据库管理系统管理控制下一定介质中构建的
4.数据库管理系统:数据库管理软件,用于建立维护数据库
5.数据库系统:由数据库和数据库管理系统等构成的开发工具集合
二.关系型数据库 or 非关系型数据库
1.采用关系模型来组织数据结构的数据库(二维表)
[1]常见关系型数据库Oracle DB2 SQLServer Mysql sqlite(python标准库支持)
[2]优缺点:
优点:1.逻辑清晰,容易理解,结构类似于常见的表格
2.使用sql语句进行数据操作,技术成熟,使用方便
3.数据一致性高,冗余低,完整性好
4.关系型数据库比较成熟,可以使用一些复杂操作
缺点:1.每次操作需要专门sql语句解析,速度较慢
2.关系型数据可内部往往进行加锁处理也影响了处理速度
3.不能很好的处理海量数据高并发的需求,读写能力差
2.非关系型数据库(NoSql --Not only sql)
[1]常见非关系型数据库
1.键值型数据库:Redis(键值对)
2.列存储数据库:HBase(存储速度快,每一列为一个存储单元)
3.文档性数据库:MongoDB,CouchDB
4.图形数据库:Graph
[2]优点缺点
优点:*读写速度快,可以更好应对并发处理需求
*使用灵活多样,容易扩展
缺点:*没有sql那样同一的语句操作
*技术曾数度较差,缺少一些复杂操作
[3]应用场景:
1.对数据格式一致性要求不严格
2.对数据处理速度特别是海量数据并发请求的情况
3.某些特定场景,如需要较强的扩展,数据库需要缓存等
要求:关系型数据库和非关系型数据库的区别特点、
二.MongoDB数据库
1.MongoDB特点
[1]非关系型数据库中的文档型数据库
[2]开源数据库,使用(相对)广泛,更新比较快
[3]是由c++编写的数据库管理系统
[4]支持丰富的存储类型,和数据操作
[5]有众多编程语言提供操作接口
[6]方便扩展和部署,使用方便
2.MongoDB安装
[1]Linux:sudo apt-get install mongodb
[2]Mac OS:brew install mongod
[3]Windows:www.mongodb.com 下载对应的安装包
-->Try free-->server-->版本-->downlod
[4]Linux 安装目录
安装位置:/var/lib/mongodb
配置文件:/etc/mongodb.conf
命令集:/usr/bin
三.MongoDB命令
1.mongod 配置mongodb基本信息
[1]mongod -h 查看命令帮助
[2]mongod --dbpath [dir] 设置数据库存储位置
[3]mongod --port [port] 设置数据库的端口,默认端口27017
2.mongo 进入mongo shell 界面
[1]mongo 进入mongoshell界面。即可操作数据库
[2]quit() ctrl -c可以退出mongo shell
四.MongoDB 数据库的数据结构
1.组成:键值对-->文档-->集合-->数据库
e.g. :
------------------------------------
ID | NAME |AGE
------------------------------------
1 | Lily |17
------------------------------------
2 | Lucy |18
------------------------------------
{
"_id":1,
"NAME":"Lily",
"AGE":17
},
{
"_id":2,
"NAME":"Lucy",
"AGE":18
}
2.基本概念对比
mysql mongodb 含义
database database 数据库
table collecttion 表/集合
column field 字段/域
row document 记录/文档
index index 索引
五.数据库操作
1.
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.备份命令(mongo命令,在终端执行)
命令:
mongodump -h[host] -d [database] -o [path]
e.g.将本机下stu数据库被分到dir目录中
mongodump -h 127.0.0.1 -d stu -o dir
2.恢复命令
命令:mongorestore -h [host:port] -d [db] [file]
将备份文件恢复到本机数据库中
e.g.将备份文件恢复到本机的student数据库
mongorestore -h 127.0.0.1:27017 -d student dir/stu
7.数据库监控命令
1.查看数据库的运行状态:mongostat
insert query update delete :每秒增查改删次数
command :每秒执行mongo命令操作次数
flushes :和磁盘交互情况
vsize res :使用虚拟内存和物理内容情况
time:运行时间
2.监控数据中数据表读写情况:mongotop
ns total read write
数据集合 每秒读写总时长 每秒读时长 每秒写时长
2.创建集合
【1】创建集合
1.db.creatCollection(collectionName)
e.g.在数据库中创建集合class1
db.createCollection('class1')
2.当插入数据时,如果指定集合不存在则自动创建
e.g.入果Class2集合不存在则自动创建
db.class2.insert({'name':'圣枷','age':32})
【2】查看数据库集合:show collections
show tables
【3】集合命名规则
1.使用utf-8字符
2.不能含有'\0'字符
3.不要以system.开头,这是系统集合默认开头
4.不要和关键字重名
【4】删除集合
命令:db.collection.drop()
e.g.删除class集合
db.class.drop()
【5】集合重命名
命令:db.collection.renameCollection("new_name")
e.g.class2重命名为class0
db.class2.renameCollection('class0')
3.文档
【1】什么是文档:
*文档是mongodb数据库中基本的数据库组织单元
*文档有多个键值对组成,每个键值对表达一个数据项
*mongodb文档属于bson类型数据
【2】文档中的键值对
1.特点:*文档键值对是无序的
*通过键取其中的值
*键不能重复
2.键:即文档数据的域名,表达数据的基本信息
规定:*使用utf-8字符串
*不能含有'\0'
3.值:即数据库中存储的数据
类型 值
整形(int) 整数
浮点型(double) 小数
布尔类型 true false
Array数组 [1,2,3]类似于列表
String字符串 "abc"utf-8
Date日期时间 日期
Timestamp 时间戳
Binary data 二进制字节串(二进制格式类型)
Null 空 null
Object 对象(内部文档)
code JS代码
regex 正则
ObjectId ID对象
【3】ObjectId:是插入文档时,mongodb 会自动为文档生成一个主键ID值,
保证不会和其他文档id值重复
e.g.'_id':Object("5c76359727e5b540***")
*_id为自动生成的域名,表示主键域
*ObjectId值由24或16进制码通过一定算法得到
【4】集合中的文档设计
1.一个集合中的文档尽量表达相同的数据内容
2.集合中文档层次不宜嵌套过多
3.在集合中文档使用比较自由,原则上文档结构可以各不相同
六.数据基本操作
1.插入文档
【1】插入单个文档:
命令:db.collection.insertOne(doc)
e.g.向class0中插入一个文档
db.class0.insertOne({'name':'Jame','age':16,'sex':'m'})
db.class0.insertOne({'name':'Lily',age:17,sex:'f'})
*数据操作时键可以不加引号,默认为utf-8字符串
*文档插入集合是一个有序行为
*可以自己设定文档的_id域值,但是ID不能重复
【2】插入多条文档
命令:db.collection.insertMany([doc,doc...])
e.g.向class0中插入多个文档
db.class0.insertMany([{name:'Tom',age:19,sex:'m'},{name:'Levi',age:18,sex:'m'}])
【3】一个综合的函数
命令:db.collection.insert()
说明:用法为insertOne+insertMany,但是官方文档已不推荐
【4】save保存文档
命令:db.collection.save()
说明:参数用法与insert(),但是当ID重复时会覆盖原有文档。
如果_id不重复则同为插入文件
作业:能够回答关系习惯数据库与非关系型数据库的区别
熟练mongo数据的创建,集合操作,数据插入
使用Mongodb完成mysql数据库练习中数据库数据表的创建,数据的添加
来源:https://www.cnblogs.com/shengjia/p/10445890.html