非关系性数据库:Mongo
Mongo
介绍
- 是一种非关系性数据库,不像
MySQL
那样有很多条条框框的约束,想怎么存就怎么存。
- 什么叫数据库,集合,文档?请看下面的栗子。
举个栗子:教学
- 前提:我想创建一个论坛,论坛里又有很多用户,所以我需要一个论坛数据库,其中还要一个用户集合(表)。
- 然后切换数据库,并查看当前数据库中的集合
- 我们可以通过
db.集合名.find()
方法查看集合中的所有文档(集合中的每条信息叫做文档)
常用操作
连接数据库
查看所有数据库
切换数据库
展示数据库中的集合
展示集合中的所有文档
删除集合中的所有文档
Mongoose 插件
官方定义如下:编写 MongoDB 验证,转换和业务逻辑是非常麻烦的. 所以我们发明了 Mongoose.
我个人的理解:就是类似JavaScript
和jQuery
的关系。Mongoose
相当于jQuery
。
- 数据库是不需要输入命令的时候建立的,它是在你插入数据的时候就给你建立的
建立文档结构 Schema
- 用户表中的用户信息不能是没有规律的吧,需要有用户名,性别,年龄等等信息,我们需要这样一个规范,用来更好的设计,储存数据库,方便以后的查阅,这就引入了文档结构 Schema
- 类似一下的感觉
- 首先在后台中,新建一个文件夹,叫啥随便你,这个文件夹作用是:用来存储文档的格式,也就是规定了每条数据都有啥属性。
- 这个
js
文件连接了数据库,并且引入了mongoose
插件
- 记得最后要导出,导出的名字不要写成复数,也就是我上图中的
module.exports = User
,因为插件会帮你转成复数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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;
|
操作
添加数据
1 2 3 4 5 6 7 8 9 10
|
const weiboUser = require("../module/weiboUser"); new weiboUser(需要保存的数据).save((err, ret) => { if (err) { } else { } });
|
删除数据
根据条件删除文档
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| weiboUser.remove( { username: "王先生" }, { password: "123", }, function (err, ret) { if (err) { console.log("删除失败"); } else { console.log("删除成功"); console.log(ret); } } );
|
查数据
- 可以通过
文档结构.find(查询的数据,回调函数(err, ret){})
来查询数据,其中ret
就是查询到的文档(数据)
- 也可以查询一个
findOne()
1 2 3 4 5 6 7
| weiboUser.find({ username: data.username }, (err, ret) => { if (ret === null) { } else { } });
|
修改数据
通过id
来修改数据
其中的ret
返回的是修改前的数据内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| weiboUser.findByIdAndUpdate( "5effddd9630b7d430c4e79aa", { psw: "123", }, function (err, ret) { if (err) { console.log("修改失败"); } else { console.log("修改成功"); console.log(ret); } } );
|