关系型和非关系型数据库
关系型数据库
表就是关系,或者说表与表之间存在关系。
- 所有的关系型数据库都需要通过
sql
语言来操作 - 所有的关系型数据库在操作之前都需要设计表结构
- 而且数据表还支持约束
- 唯一的
- 主键
- 默认值
- 非空
非关系型数据库
- 非关系型数据库非常的灵活
- 有的关系型数据库就是key-value对儿
- 但MongDB是长得最像关系型数据库的非关系型数据库
- 数据库 -》 数据库
- 数据表 -》 集合(数组)
- 表记录 -》文档对象
一个数据库中可以有多个数据库,一个数据库中可以有多个集合(数组),一个集合中可以有多个文档(表记录)
1 | { |
- 也就是说你可以任意的往里面存数据,没有结构性这么一说
安装
下载
安装
1
npm i mongoose
配置环境变量
最后输入
mongod --version
测试是否安装成功
启动和关闭数据库
启动:
1 | # mongodb 默认使用执行mongod 命令所处盼复根目录下的/data/db作为自己的数据存储目录 |
如果想要修改默认的数据存储目录,可以:
1 | mongod --dbpath = 数据存储目录路径 |
停止:
1 | 在开启服务的控制台,直接Ctrl+C; |
连接数据库
连接:
1 | # 该命令默认连接本机的 MongoDB 服务 |
退出:
1 | # 在连接状态输入 exit 退出连接 |
基本命令
show dbs 查看数据库列表(数据库中的所有数据库)
1
2
3
4
- ```
db
查看当前连接的数据库use 数据库名称 切换到指定的数据库,(如果没有会新建)
1
2
3
4
- ```
show collections
查看当前目录下的所有数据表```
db.表名.find()
查看表中的详细信息1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 在Node中如何操作MongoDB数据库
## 使用官方的`MongoDB`包来操作
> http://mongodb.github.io/node-mongodb-native/
## 使用第三方包`mongoose`来操作MongoDB数据库
第三方包:`mongoose`基于MongoDB官方的`mongodb`包再一次做了封装,名字叫`mongoose`,是WordPress项目团队开发的。
> https://mongoosejs.com/
## 学习指南(步骤)
官方学习文档:https://mongoosejs.com/docs/index.html
# 设计Scheme 发布Model (创建表)
```javascript
// 1.引包
// 注意:按照后才能require使用
var mongoose = require('mongoose');
// 拿到schema图表
var Schema = mongoose.Schema;
// 2.连接数据库
// 指定连接数据库后不需要存在,当你插入第一条数据库后会自动创建数据库
mongoose.connect('mongodb://localhost/test');
// 3.设计集合结构(表结构)
// 用户表
var userSchema = new Schema({
username: { //姓名
type: String,
require: true //添加约束,保证数据的完整性,让数据按规矩统一
},
password: {
type: String,
require: true
},
email: {
type: String
}
});
// 4.将文档结构发布为模型
// mongoose.model方法就是用来将一个架构发布为 model
// 第一个参数:传入一个大写名词单数字符串用来表示你的数据库的名称
// mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
// 例如 这里会变成users集合名称
// 第二个参数:架构
// 返回值:模型构造函数
var User = mongoose.model('User', userSchema);
添加数据(增)
1 | // 5.通过模型构造函数对User中的数据进行操作 |
删除(删)
根据条件删除所有:
1 | User.remove({ |
根据条件删除一个:
1 | Model.findOneAndRemove(conditions,[options],[callback]); |
根据id删除一个:
1 | User.findByIdAndRemove(id,[options],[callback]); |
更新(改)
更新所有:
1 | User.remove(conditions,doc,[options],[callback]); |
根据指定条件更新一个:
1 | User.FindOneAndUpdate([conditions],[update],[options],[callback]); |
根据id更新一个:
1 | // 更新 根据id来修改表数据 |
查询(查)
查询所有:
1 | // 查询所有 |
条件查询所有:
1 | // 根据条件查询 |
条件查询单个:
1 | // 按照条件查询单个,查询出来的数据是一个对象({}) |