【前端29_Mongo】芒果数据库使用及常用操作、Mongoose 对数据的增删改查
程序员文章站
2022-06-10 18:57:57
...
文章目录
非关系性数据库:Mongo
Mongo
介绍
- 是一种非关系性数据库,不像
MySQL
那样有很多条条框框的约束,想怎么存就怎么存。 - 什么叫数据库,集合,文档?请看下面的栗子。
举个栗子:教学
- 前提:我想创建一个论坛,论坛里又有很多用户,所以我需要一个论坛数据库,其中还要一个用户集合(表)。
- 然后切换数据库,并查看当前数据库中的集合
- 我们可以通过
db.集合名.find()
方法查看集合中的所有文档(集合中的每条信息叫做文档)
常用操作
连接数据库
mongo
查看所有数据库
show dbs
切换数据库
use 数据库名称
展示数据库中的集合
show collections
展示集合中的所有文档
db.users.finds()
删除集合中的所有文档
> db.users.drop()
true
Mongoose 插件
官方定义如下:编写MongoDB验证,转换和业务逻辑是非常麻烦的. 所以我们发明了Mongoose.
我个人的理解:就是类似JavaScript
和jQuery
的关系。Mongoose
相当于jQuery
。
- 数据库是不需要输入命令的时候建立的,它是在你插入数据的时候就给你建立的
建立文档结构 Schema
- 用户表中的用户信息不能是没有规律的吧,需要有用户名,性别,年龄等等信息,我们需要这样一个规范,用来更好的设计,储存数据库,方便以后的查阅,这就引入了文档结构 Schema
- 类似一下的感觉
- 首先在后台中,新建一个文件夹,叫啥随便你,这个文件夹作用是:用来存储文档的格式,也就是规定了每条数据都有啥属性。
- 这个
js
文件连接了数据库,并且引入了mongoose
插件 - 记得最后要导出,导出的名字不要写成复数,也就是我上图中的
module.exports = User
,因为插件会帮你转成复数
const mongoose = require('mongoose')
const dbName = 'myWeibo'
mongoose.connect(`mongodb://localhost:27017/${dbName}`, {useNewUrlParser: true, useUnifiedTopology: true})
// 设置文档结构
var Schema = mongoose.Schema;
var userSchema = new Schema({
username:String,
psw:String
})
const User = mongoose.model('User', userSchema)
module.exports = User
操作
添加数据
- 需要先引入文档结构
- 然后通过
.save
方法保存
// 引入用户表格式 Schema
// weiboUser 是我的文档结构的名字,你的自己看看是啥
const weiboUser = require('../module/weiboUser')
new weiboUser(需要保存的数据).save((err, ret) => {
if(err){
// 保存失败
}else{
// 保存成功
}
})
删除数据
根据条件删除文档
weiboUser.remove({'username': '王先生'},{
password:'123'
}, function (err,ret) {
if(err) {
console.log('删除失败')
} else {
console.log('删除成功')
console.log(ret);
// { n: 1, ok: 1, deletedCount: 1 }
}
})
查数据
- 可以通过
文档结构.find(查询的数据,回调函数(err, ret){})
来查询数据,其中ret
就是查询到的文档(数据) - 也可以查询一个
findOne()
weiboUser.find({'username':data.username}, (err, ret) => {
if(ret === null) {
// 如果没查到
} else {
// 如果查到了
}
})
修改数据
通过id
来修改数据
其中的ret
返回的是修改前的数据内容
// 删除
weiboUser.findByIdAndUpdate('5effddd9630b7d430c4e79aa',{
psw:'123'
}, function (err,ret) {
if(err) {
console.log('修改失败')
} else {
console.log('修改成功')
console.log(ret);
// 他会返回修改前的数据
// { _id: 5effddd9630b7d430c4e79aa, username: '王先生', psw: '1', __v: 0 }
}
})