NodeJs Express框架操作MongoDB数据库执行方法讲解
作者:秃头小宋s 发布时间:2024-01-25 08:59:08
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);
})
来源:https://blog.csdn.net/m0_73634593/article/details/128209539
猜你喜欢
- window.onload 是页面全部加载完成,包括图片、CSS、JavaScript等。但加载JavaScript的方法有很多种
- 我们网站的静态资源(css、js和背景图片)和web应用程序是分开部署的,几乎所有的静态资源都部署在同一个应用下。最开始的网站
- 本文介绍的函数其实是PHP手册上本来就有的,但是由于这些函数独立性较强,查找不易,所以单独介绍一下,方便查阅。 1. 获取所有可用的模块 -
- 经过测试发现mysql中用<>与!=都是可以的,但sqlserver中不识别!=,所以建议用<>selece * f
- 1、什么是游标?一张图讲述游标的功能:图示说明:2、使用游标的好处?如果不使用游标功能,直接使用select查询,会一次性将结果集打印到屏幕
- 这篇文章主要介绍了Python读取YAML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 前言最近需要源码部署一个项目,因此探索一下保护源码的方式,由简单到复杂主要总结为以下三大类:代码混淆:主要是改变一些函数名、变量名代码打包:
- 1. 手动操作1.1. 显示模块pip list1.2. 显示过期模块pip list --outdated1.3. 安装模块pip ins
- 实现代码一、#!/usr/bin/pythonx,y=9,9 &nbs
- 传统的机器学习任务从开始到建模的一般流程是:获取数据 -> 数据预处理 -> 训练建模 -> 模型评估 -> 预测,
- 一、MySQL中如何表示当前时间?其实,表达方式还是蛮多的,汇总如下:CURRENT_TIMESTAMPCURRENT_TIMESTAMP(
- 一、块(Block)是PL/SQL的基本执行单元,由定义部分,执行部分(必须)和例外处理部分组成。Declare/*定义部分――定义常量、变
- 首先在程序中引入Requests模块import requests一、获取不同类型的响应内容在发送请求后,服务器会返回一个响应内容,而且re
- 下面看下Ubuntu 18.04.4安装mysql的过程,内容如下所示:1 sudo apt-get update2 sudo a
- 下面把sqlserver中cross apply和outer apply关键字具体介绍展示如下:1.CROSS APPLY 和OUTER A
- 1.SQL Server2019安装包下载1.1进入官网SQL Server 20191.2下载安装包1点击Continue2.填写个人信息
- torch.argmax()函数解析1. 官网链接torch.argmax(),如下图所示:2. torch.argmax(input)函数
- 本文实例讲述了Python实现统计python文件中代码,注释及空白对应的行数。分享给大家供大家参考,具体如下:其实代码和空白行很好统计,难
- Microsoft JET Database Engine 错误 '80040e2
- Windowns操作系统中安装Python,供大家参考,具体内容如下一.下载Python1.python 官网 下载安装包2.选择