NodeJs Express框架操作MongoDB数据库执行方法讲解

 更新时间:2023年01月10日 15:54:53   作者:秃头小宋s  
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型

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';
/*
    建立和MongoDB数据库的连接
    useNewUrlParser:是否使用新的url地址转换方式
    useUnifiedTopology:是否使用新的用户安全策略
*/
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('断开数据库的连接~');
})
// 导出mongoose
module.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:'东土大唐'
})
/*
*   通过对象调用save方法向数据库中插入数据err存放的是保存失败后的信息 res是保存的对象
*/
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数据库执行方法讲解的文章就介绍到这了,更多相关NodeJs操作MongoDB数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Node.js中Express框架使用axios同步请求(async+await)实现方法

    Node.js中Express框架使用axios同步请求(async+await)实现方法

    这篇文章主要介绍了Node.js中Express框架使用axios同步请求(async+await)实现方法,结合实例形式分析了express框架使用异步交互axios模块实现同步请求的相关操作技巧与注意事项,需要的朋友可以参考下
    2023-04-04
  • node.js中的url.parse方法使用举例

    node.js中的url.parse方法使用举例

    url.parse()可以将一个完整的URL地址,分为很多部分,下面这篇文章主要给大家介绍了关于node.js中url.parse方法使用的相关资料,文中通过实例代码和图文介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Node.js中readline模块实现终端输入

    Node.js中readline模块实现终端输入

    本文主要介绍了Node.js中readline模块实现终端输入,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • nodejs部署到腾讯云的实现方法

    nodejs部署到腾讯云的实现方法

    本文主要介绍了nodejs部署到腾讯云的实现方法,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Node.js实现一个HTTP服务器的方法示例

    Node.js实现一个HTTP服务器的方法示例

    这篇文章主要介绍了Node.js实现一个HTTP服务器的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 简单易懂的nvm和Node.js版本控制的实现

    简单易懂的nvm和Node.js版本控制的实现

    NVM是Node.js的版本管理工具,可以方便地在不同版本的Node.js之间切换,本文主要介绍了简单易懂的nvm和Node.js版本控制的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 如何使用Node.js爬取任意网页资源并输出PDF文件到本地

    如何使用Node.js爬取任意网页资源并输出PDF文件到本地

    这篇文章主要介绍了使用Node.js爬取任意网页资源并输出高质量PDF文件到本地,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编就来和大家一起学习吧
    2019-06-06
  • 防止Node.js中错误导致进程阻塞的办法

    防止Node.js中错误导致进程阻塞的办法

    Node.js我们用到非常的多了,如果我们开发不当可能因错误导致进程阻塞问题,对于进程阻塞问题一直是个头痛的事情,今天我们一起来看一篇关于Node.js防止错误导致的进程阻塞示例,下面一起来看看。
    2016-08-08
  • node.js中实现token的生成与验证的操作方法

    node.js中实现token的生成与验证的操作方法

    Token是一种用于在客户端和服务器之间安全传输信息的加密字符串,常用于身份验证、授权、状态管理和安全性,在Node.js中,常用jsonwebtoken库生成和验证Token,本文介绍node.js中实现token的生成与验证的操作方法,感兴趣的朋友一起看看吧
    2025-01-01
  • Nodejs实现WebSocket代码实例

    Nodejs实现WebSocket代码实例

    这篇文章主要介绍了Nodejs实现WebSocket代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论