关系型数据库 和 非关系型数据库(MongoDB)
关系型数据库
表就是关系,或者说表与表之间存在关系
- 都需要通过 sql 语言来操作
- 在操作之前都需要设计表结构
- 而且数据表还支持约束
- 唯一的
- 主键
- 默认值
- 非空
非关系型数据库
- 非常灵活,就是 key-value 对儿
- MongoDB 是长的最像关系型数据库的非关系型数据库
- 数据库:数据库
- 数据表:集合(数组)
- 表记录:(文档对象)
MongoDB 数据库结构:
{
qq: {
user: [
{name: 'bob', age: 13},
{name: 'lucy', age: 15},
{name: 'john', age: 14}
],
passward: [
],
...
},
taobao: {
}
}
- MongoDB 不需要设计表结构,可以任意的往里面存数据,没有结构一说
- 当需要插入数据时,只需要指定往哪个数据库的哪个集合操作就可以了
MongoDB
下载官网:MongoDB
启动:
# mongodb 默认执行 mongod 命令所处盘符根目录下的 /data/db
# 作为自己的数据储存目录
#所以在第一次执行该命令前需手动创建一个 /data/db
mongod
# 或者像下面一样自定义数据储存目录,但每次都需下面一样执行命令
mongod --dbpath D:\安装软件\mongoDB\data\db
停止:
ctrl + c
连接数据库:
# 新启 cmd,下命令默认连接本机的 MongoDB 服务
mongo
退出:
exit
基本命令:
-
show dbs- 查看显示所有数据库
-
db- 查看当前操作的数据库
-
use 数据库名称- 切换到指定的数据库(如果没有会新建)
-
show collections- 展示数据库中所有的集合
-
db.集合名称.insertOne({ 数据文档 })- 插入数据,例如:
db.students.insertOne({"name":"bob"})
- 插入数据,例如:
-
db.集合名称.find()- 查找显示数据,例如:
db.students.find() - 可以通过
db.集合名称.find().pretty()美化输出格式 - 默认是查询所有,可以通过
db.集合名称.find({ 查询条件 })按条件查询集合中的数据
- 查找显示数据,例如:
-
db.集合名称.update({ 更新条件 },{ 要更新的字段 })- 更新指定集合数据,注意点,要更新的字段一定要这样写
{$set:{字段名称 : 字段值}}
- 更新指定集合数据,注意点,要更新的字段一定要这样写
-
db.集合名称.remove({ 删除条件 })- 删除指定集合中的数据
-
exit退出 -
cls清屏
在 node 中操作 MongoDB 数据
- 使用第三方 mongoose 来操作 MongoDB 数据库(推荐)
- 基于官方的 mongodb 包再做了封装
- 官网:http://mongoosejs.com
- 官方指南:http://mongoosejs.com/docs/guide.html
- 官方 API 文档:http://mongoosejs.com/docs/api.html
# 安装
npm i -S mogoose
// 引包
const mongoose = require('mongoose');
// 连接 MongoDB 数据库
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});
// 创建一个模型
// 就是在设计数据库
// MongoDB 是动态的,非常灵活,只需要在代码中设计你的数据库就可以了
// mongoose 这个包就可以让设计编写过程变的非常的简单
// model(数据名称,数据类型);
const Cat = mongoose.model('Cat', {name: String});
for (let i = 0; i < 10; i++) {
// 实例化一个 Cat
const kitty = new Cat({name: 'bob' + i});
// 持久化保存 Kitty 实例
kitty.save().then(() => console.log('meow'));
}