第一章、MongoDB基础
学习目标
- 数据库种类
- MongoDB简介
- MongoDB安装
- MongoDB基本操作
- MongoDB文档增删修查(CURD)
- MongoDB实战教学管理系统数据库设计
数据库种类
- 关系型:Oracle、MySQL、SQLite 、SQL Server等
- 非关系型(Not Only SQL):MongoDB(文档)、Redis/Memcache(内存)
关系型和非关系型数据库软件区别
- 相同点:都是数据库软件,用来存放项目数据
- 不同点:
关系型:1.遵循SQL标准,换句话说语法大同小异、2.有库和表约束等
非关系型:1.没有统一标准、2.一般键值对形式存储、3.读取速度更快
关系型和非关系型数据库如何选择:

1、MongoDB简介
- MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- MongoDB是一个介于关系型和非关系型数据库之间的产品,是非关系型数据库当中功能最为丰富,也是最像关系型数据库的。
- 支持的数据结构非常松散,是类似json的bson格式
JSON(Javascript Object Notation JS对象简谱)是一种轻量级的数据交换格式bson(二进制JSON)
下载版本地址
- windows版本下载:https://www.mongodb.org/dl/win32
- linux版本下载:https://www.mongodb.org/dl/linux
- 社区免费版(自选版本):https://www.mongodb.com/try/download/community
- 版本说明:
2.x3.x (3.2 、3.4、3.6 )4.x (4.2 更佳的数据管理能力、更强的分布式架构、多文档事物等)
2、Windows下安装MongoDB
2.1、步骤
- 步骤1:下载地址:https://www.mongodb.com/try/download/community
- 步骤2:解压
解压后先在解压目录中创建如下文件夹,用于创建MongoDB服务
- 步骤3:创建MongoDB服务
注意:1:必须要通过管理员身份运行DOS窗口,切换到bin目录下,否则无权限会创建失败2:得提前创建数据和日志存放目录 (上述我们已创建)
- 执行如下命令:
#此处的磁盘路径就是我们上述的data文件夹路径
#此处的日志路径就是我们上述的log文件夹路径
mongod.exe --install --dbpath 磁盘路径 --logpath 日志路径
执行上述命令直接回车即可:

去服务中查看MongoDB服务是否创建成功?

- 步骤4:启动服务
net start mongodb
- 步骤5:登录(验证是否安装成功)
#连接MongoDB数据库
mongo
- 关闭服务命令:
net stop mongodb2.2、Linux系统下安装MongoDB
- 步骤1:下载curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
- 步骤2:解压
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz- 步骤3:将解压包拷贝到指定目录
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb- 步骤4:创建数据存放目录与日志存放目录
mkdir -p /usr/local/mongodb/data /usr/local/mongodb/logs- 步骤5:启动MongoDB服务
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port=27017 --fork- 后期登录即可
/usr/local/mongodb/bin/mongo
3、启动成功后,为数据库设置登录密码(数据安全)
3.1、查看所有数据库
#查看所有数据库
show databases
show dbs #缩写指令
3.2、选择admin数据库,并为其设置用户和密码
3.2.1、给admin数据库设置用户和密码及权限角色
db.createUser({user: 'root', pwd: '123456', roles: ['root']})3.2.2、验证是否设置成功
#这里用db.auth('root', '123456')
#如果返回 '1'表示验证成功, 如果是 '0' 表示验证失败.
db.auth('用户名','用户密码')
4、基本指令操作
- 查看数据库
show databases #完整形式
show dbs #缩写形式- 选择数据库
use admin- 查看集合
show collections- 创建集合
db.createCollection('集合名')- 删除集合
db.集合名.drop()- 删除数据库
#第一步
use 数据库名
#第二步
db.dropDatabase()5、MongoDB文档增删改查(CURD)
5.1、增加数据(Create)
- 向集合中插入数据
db.集合名.insert({key1:'value1',key2:'value2',……})- 查看集合中的数据
db.集合名.find()留心1:数据库和集合不存在的时候都会隐式创建
留心2:对象的键统一不加引号方便看,但是查看集合数据时系统会自动加
留心3:mongodb会给每条数据增加一个全球唯一的_id键,当然也可以自己赋值把系统自定义的覆盖掉(非常不建议这样做)


- 一次性向集合中插入多条记录
#注意此处的中括号
db.集合名.insert([
{uname:'lisi',pwd:'654321',age:22},
{uname:'wangwu',pwd:'123321',age:23},
{uname:'zhaoliu',pwd:'112233',age:24}
])
- 如何向集合中快速插入十条数据
for(var i=0;i<=10;i++){
db.集合名.insert(uname:'a'+i,pwd:'pwd'+i,age:i)
}
5.2、查找数据(Read)
- 按条件查询所有数据
db.集合名.find({},{条件}) #前面的{}也可以不写- 语法:
db.集合名.find({ 键:{运算符:值} })条件:查询所有数据 {}或者不写
- 查询age=6的数据 ----{age:6}
- 既要age=6又要性别=男 ----{age:6,sex:‘男’}
- 查询的列:参数不写 ----是查询全部列
- 字段 {age:1} 只显示age列(
- 字段 {age:0} 除了age列其他字段都显示
- 留心:不管你怎么写系统自定义的_id都会在
- 运算符:
$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
$in 在其中
$nin 不在其中- 查询年龄大于5的记录
- 查询年龄为5,岁、8岁、10岁的记录
5.3、修改数据(Update)
- 将{uname:‘zs1’}修改为{uname:‘zs11’}
db.集合名.update({uname:'zs1'},{{uname:'zs11'})- 使用升级语法修改器(将zs4的姓名改为zs44)
db.c3.update({uname:"zs4"}, {$set: {uname: "zs44"}})- 修改器语法:
$set #修改列值
$unset #删除列值
$inc #递增
$rename #修改列名(重命名)- 给{uname:“zs10”}的年龄加2岁或者减2岁(利用$inc)
- 综合利用修改器
5.4、删除数据(Delete)
- 语法:
db.集合名.remove({},true/false) #后面的条件不写默认是false注意:是否删除一条记录
- true-是
- false-否(默认)
- MongoDB增删改查CURD标识总结:
- 增Create
db.集合名.insert()- 删Delete
db.集合名.remove()- 改Update
db.集合名.update()- 查Read
db.集合名.find()



















