这篇文章主要介绍“NodeJs Express框架如何操作MongoDB数据库”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“NodeJs Express框架如何操作MongoDB数据库”文章能帮助大家解决问题。
1、Mongoose模块
(1)是一个对象模型工具,是对Node.js环境下操作MongoDB数据库进行了封装,可以将MongoDB数据库中的数据转换成JavaScript对象供用户使用。
(2)名词:
Schema:它是一种以文件形式存储的数据库模型骨架,不具备对数据库操作的能力,仅仅只是数据库在程序片段中的一种表现,可以理解为表结构。
Model:由Schema发布生成的模型,具有抽象属性和行为的数据库操作
Entity:由Model创建的实体,它的操作也会影响数据库
(3)命名规范:驼峰命名 例:
PersonSchema:Person对应的Schema ,Person的文本属性(表结构)
PersonModel:Person对应的Model
PersonEntity:Person对应的Entity
Schema生成Model,由Model生成Entity,Model和Entity都可以操作数据库,Model的可操作性更强。
2、Mongoose模块的使用
(1)安装:npm install mongoose
(2)创建数据库连接文件
// 导入mongoose模块const Mongoose = require('mongoose');// 定义MongoDB数据库的连接字符串:协议://主机地址:端口号/数据库名const mdb_url = 'mongodb://localhost:27017/my_test';Mongoose.connect(mdb_url,{useNewUrlParser:true,useUnifiedTopology:true});// 对连接过程进行处理// 建立连接 ——连接成功触发connected事件Mongoose.connection.on('connected',()=>{ console.log('数据库连接成功~'+mdb_url);})// 连接异常 ——回调函数的参数中保存了异常的信息Mongoose.connection.on('error',(e)=>{ console.log(e);})//断开连接 ——断开连接触发Mongoose.connection.on('disconnected',()=>{ console.log('断开数据库的连接~');})// 导出mongoosemodule.exports = Mongoose;
(3)创建Schema,再由Schema创建Model
Schema:定义的是与集合对应的骨架。Schema中的属性对应的是MongoDB中集合的key。
是Schema的实例,用于操作MongoDB中的集合中的文档。
3、关于模型名称和数据库中集合名称的对应关系
(1)数据库中没有集合
mongoose.model('Admin',AdminSchema) ——>在模型名后加s就是集合名(不区分大小写) ——admins
mongoose.model('Admin',AdminSchema,'admin')——>第三个参数就是用于定义的集合名称
(2)数据库中有集合
mongoose.model('Admin',AdminSchema,'数据库中已有的集合名')
4、mongoose的基本操作
(1)插入文档:save方法
先使用Model创建Entity
然后使用Entity调用save方法
const AdminModel = require('../model/adminModel');// 通过model创建一个对象const admin = new AdminModel({ _id:'1005', userName:'唐僧', password:'123456', address:'东土大唐'})admin.save((err,res)=>{ if(err){ console.log(err); }else{ console.log(res); }})
(2)删除文档:findByIdAndDelete :直接通过Model调用,作用是根据文档的_id属性删除
(3)删除文档:deleteOne:直接通过Model调用,根据给定的条件删除文档
(4)更新文档:findOneAndUpdate,直接通过Model调用
findOneAndUpdate(条件,更新语句,{},回调函数)
AdminModel.findOneAndUpdate( {'_id':'1004'}, //表示查询的条件 {$set:{'password':'789567'}}, //更新语句 null, //表示查询操作,通常为null (err,data)=>{ //更新回调函数,err表示数据库的错误信息,data中存放的findOne查询到的文档 if(err){ console.log(err); //err表示数据库错误:查询、更新时数据库出现异常 }else if(!data){ //data为null时表示没有找到对应的文档 console.log('更新失败~'); }else if(data){ //data不为null时表示找到对应的文档 console.log('更新成功~') } })
(5)更新文档:updateOne(条件,更新语句,回调函数)
AdminModel.updateOne({'password':'123456'},{$set:{'password':'567890'}},(err,data)=>{ if(err){ console.log(err); } console.log(data.modifiedCount);})
(6)查询所有:find
AdminModel.find((err,data)=>{ if(err){ console.log(err); } console.log(data);})
(7)按_id查询:findById
AdminModel.findById({ '_id':'1004'},(err,data)=>{ if(err){ console.log(err); } console.log(data);})
(8)多条件查询:findOne 返回满足条件的第一条记录
AdminModel.findOne({ address:'三国', password:'123456'},(err,data)=>{ if(err){ console.log(err); } console.log(data)})
(9)查询集合中的文档数量 :count
AdminModel.count((err,data)=>{ if(err){ console.log(err); } console.log('记录数:'+data);})
关于“NodeJs Express框架如何操作MongoDB数据库”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。