MongoDB
1.数据库
- 数据库(database),可以看作是一个存放数据的仓库
- 我们的程序都是在内存中运行的,一旦遇到程序运行结束、重启等情况,程序运行的数据都会丢失。因此,我们需要将一些程序中要用到的数据持久化到硬盘中去,所以就出现了数据库这样的工具。
1.1数据库的类型
- 关系型数据库:MySQL、Oracle
- 非关系型数据库(NoSQL):MongoDB
1.2数据库结构
2.操作MongoDB
- 命令行工具去操作
- 可视化图形工具去操作
- Nodejs中去操作
2.1命令行工具去操作 MongoDB
打开 MongoDB 安装目录中的 mongo.exe
文件:
2.1.1常用命令
-
查看所有数据库(无法查看空的数据库)
show dbs
-
查看当前数据库
db
-
切换/新建数据库
# use 数据库名称 use xmz01
-
查看数据库中所有集合
show collections
-
往集合中添加数据(若该集合不存在,则自动创建)
# db.集合名称.insert({添加的数据}) db.students.insert({name:'张三',age:'20',gender:'男'})
-
查看集合中所有的数据
# db.集合名称.find() db.students.find().pretty()
2.2可视化图形工具去操作
- 使用navicat
2.3Nodejs中去操作MongoDB
-
mongoose是Nodejs中提供的一个用于便捷操作MongoDB的工具
-
下载:
npm i mongoose
2.3.1连接数据库
将express后端项目与mongodb服务器中的数据库连接起来
//通过mongoose去连接MongoDB
const mongoose = require('mongoose');
//设置要连接的MongoDB服务器地址(xmz01:要连接的数据库名称)
const dbURL='mongodb://localhost:27017/xmz01';
//连接数据库
mongosse.connect(dbURI,{useNewUrlParser:true,useUnifiedTopology:true});
mongoose.connection.on('connected',()=>console.log(dbURL+'数据库连接成功'));
注:xmz01是当前连接的数据库的名称,以后在其他项目中,可以根据实际情况进行更改
2.3.2配置集合
当数据库连接成功之后,就可以开始去操作数据库的集合了。但是在首次操作之前,必须先对要操作的集合进行相关的配置
-
配置集合结构:定义出集合中数据有那些属性,每一个属性的值是什么数据类型
//数据库集合的相关配置 //1.定义数据集合的结构:定义出集合中数据有那些属性,属性的值是什么类型 const {Schema} = require('mongoose'); const usersSchema = new Schema({ username:String, password:String });
-
配置集合模型:
- 将上一步中的schema集合结构和数据库中的集合关联起来,得到一个数据模型。
- 所有关于数据集合操作的方法,都是数据模型提供的
const {model} = require('mongoose'); //2.定义数据集合的模型:将Schema和数据库中的集合关联起来 // model('模型名称',Schema变量名称,'数据库中的集合名称'); const userModel = model('usersModel',usersSchema,'users');
2.3.3操作数据
-
查询、查找
-
按条件查询:
usersModel.find({username:'张三'})
-
查询所有数据:
usersModel.find()
-
-
新增
-
usersModel.create({username:'123',password:'123'})
-
-
删除
-
usersModel.deleteOne({username:'zhangsan'}); usersModel.deleteMany({username:'zhangsan'});
-
-
修改
-
usersModel.updateOne({_id:1},{username:'lisi',password:'123'});
注:以上所有的方法都是异步方法,且这些方法的返回值都是Promise对象,因此需要通过await去等待结果。
举例:
router.post('/login',async function(req,res,next){ //接受到前端发送的用户数据 const user=req.body; const result=await usersModel.find({username:'123'}); });
-
-
新增:
模型.create({})
-
查询所有
模型.find()
-
按条件查询
模型.find({查询条件})
-
删除
模型.deleteOne({删除条件})
-
修改
模型.updateOne({查询条件},{修改数据})