补充:
mongoDB默认端口:27017
MySQL默认端口:3306
http:80
https:443
一. 关系型数据库和非关系型数据库
| 关系型 | 非关系型 |
|---|---|
| 二维表(类似于excel表) | json数据 |
| 表结构以及字段类型相对固定 | 比较灵活 |
| MySQL | mongoDB |
| database | database |
| table(表) | collection(集合) |
| row(行) | document(文档) |
| col(列) | field(字段) |
| 数据库操作通过sql语句(结构化查询语句) | 通过js api去操作 |
二. 安装mongoDB
搜索3.1.2下载名字最长的安装
百度网盘18302827830Nodejs工具文件夹:mongodb-win32-x86_64-2008plus-ssl-3.1.2-signed.msi
注意点:
在安装的时候会有一个选项complete,custom,选custom

启动
(1)在安装好了之后,新建一个浅一点的目录,不要有中文,这个目录是用来存放数据的,d://db
(2)进入mongoDB的安装目录(建议选择默认路径),进入这个目录以后再进入bin目录

(3)进入bin目录,在bin目录这里打开命令行工具(git bash、powershell或者cmd)
mongo

这个就是测试 出现版本号
然后输入以下命令:
mongod --dbpath d://db
没报错就成功启动。这个窗口不要关!!!
(4)连接使用
可视化工具:robo3t或者navicat for mongodb
老师已发的robo3t:百度网盘18302827830Nodejs工具文件夹:robo3t-1.2.1-windows-x86_64-3e50a65.exe
如果装不上就装:navicat for mongodb(可装官方试用版)百度网盘18302827830Nodejs工具文件夹:robo3t-1.2.1-windows-x86_64-3e50a65.exe
可视化工具使用:
save(存)、find(找到)
mongodb的_id是自动生成的一个随机字符串,是mongodb的一个特点
三. mongoose -- 操作数据库
官方网站:mongoosejs.com
mongoosejs可以更快,更便捷的操作mongodb。可以把非关系型解构转成关系型结构
1. 安装
命令:npm i mongoose

2. 新建一个app.js
//引进mongoose
const mongoose = require('mongoose')
//连接本地1910数据库
mongoose.connect('mongodb://localhost/1910', {useNewUrlParser:true})
//打开集合,得到当前数据库里集合的实例
const db = mongoose.connection
//处理打开失败的事件
db.on('error',console.error.bind(console,'connection error:'))
//打开事件(这个事件只会被触发一次)
db.once('open', function(){
console.log("we're connected!")
})
//通过Schema 让数据结构化
//创建一个结构化的collection(集合),如果collection只是创建而没有数据的话在可视化工具里是看不到的,collection的名称要加上s,比如说users
const usersSchema = new mongoose.Schema({
name: String,
password: String
})
//利用创建好的Schema得到一个model,这个model是一个class
const Users = mongoose.model('users', usersSchema)
//存:
//通过实例化model得到一个document
const user = new Users({ name: 'lisi', password: '456'})
user.save((err, doc) => {
if(err) console.error(err)
else console.log(doc)
})
运行app.js node app
3. 总结使用mongoose操作数据库
(1)连接数据库并打开collection
(2)创建一个schema得到结构化的collection(集合),如果collection只是创建而没有数据的话在可视化工具里是看不到的,collection的名称要加上s,比如说users
(3)利用schema得到一个model
(4)然后new一个model把当前schema定义的结构化数据作为参数传进去就可以得到一个document
(5)然后用save()方法存入mongodb数据库
4. 查
//查所有
Users.find((err, docs) => {
if(err) console.error(err)
else console.log(docs)
})
//查一条 条件:password: '456'
Users.find({ password: '456' },(err, docs) => {
if(err) console.error(err)
else console.log(docs)
})
5. 删
Users.findOneAndDelete({ password: '456' }, (err,doc) => {
if(err) console.error(err)
else console.log(doc)
})
6. 修改
Users.findOneAndUpdate({ password: '123' }, { name: 'zhangsan'}, { new: true },(err,doc) => {
if(err) console.error(err)
else console.log(doc)
})
//这里的new: true 加上打印之后就是修改之后的数据
补充:MVC
control:处理逻辑,需要数据时调model
model:操作数据库,封装数据库方法
view:前端视图
