当前位置: 首页 > news >正文

mongoose学习记录

mongoose安装和连接数据库

npm i mongoose

导入mongoose

const mongoose = require('mongoose')
mongoose.set("strictQuery",true)

连接数据库

mongoose.connect('mongodb:127.0.0.1:27017/test')

设置回调

mongoose.connection.on('open',()=>{console.log("连接成功")
})mongoose.connection.on('error',()=>{console.log("连接失败")
})mongoose.connection.on('close',()=>{console.log("连接关闭")
})
setTimeout(()=>{mongoose.disconnect();
},2000)

mongoose.connection.on与mongoose.connection.once的区别在于当数据库断开时,once,回调函数不会执行,而on可以

插入文档

mongoose.connection.on('open',()=>{//5.创建文档的结构对象//设置集合中文档的属性以及属性值的类型let BookSchema =new mongoose.Schema({name:String,author:String,price:Number})//6.创建模型对象。对文档操作的封装对象let BookModel = mongoose.model('book',BookSchema) //数据库名(集合),数据库表名(结构对象)BookModel.create({name:"西游记",author:"吴承恩",price:20},(err,data)=>{if(err){console.log(err)return}console.log(data)})//项目运行过程中,不会添加该代码mongoose.disconnect();
})

字段类型

类型描述
String字符串
Number数字
Boolean布尔值
Array数组,也可以用[]
Date日期
Bufferbuffer对象
Mixed任意类型,需要使用mongoose.Schema.Types.Mixed指定
ObjectId任意类型,需要使用mongoose.Schema.Types.ObjectId指定
Decimal128任意类型,需要使用mongoose.Schema.Types.Decimal128 指定

字段值验证

Mongoose有一些内建验证器,可以对字段值进行验证

必填项

title:{type:String,required:true}

默认项

title:{type:String,default:"匿名"}

枚举值

title:{type:String,enum:[1,2]}

唯一值

title:{type:String,unique:true}

删除文档

mongoose.connection.on('open',()=>{//5.创建文档的结构对象//设置集合中文档的属性以及属性值的类型let BookSchema =new mongoose.Schema({name:String,author:String,price:Number})//6.创建模型对象。对文档操作的封装对象let BookModel = mongoose.model('book',BookSchema) //数据库名(集合),数据库表名(结构对象)// 删除一个BookModel.deleteOne({author:'曹雪芹'},(err,data)=>{if(err){console.log("删除失败")return}console.log(data)}// 批量删除BookModel.deleteMany({is_hot:false},(err,data)=>{if(err){console.log("删除失败")return}console.log(data)}//项目运行过程中,不会添加该代码mongoose.disconnect();
})

更新文档

mongoose.connection.on('open',()=>{//5.创建文档的结构对象//设置集合中文档的属性以及属性值的类型let BookSchema =new mongoose.Schema({name:String,author:String,price:Number})//6.创建模型对象。对文档操作的封装对象let BookModel = mongoose.model('book',BookSchema) //数据库名(集合),数据库表名(结构对象)// 更新BookModel.updateOne({name:"红楼梦"},{price:9.9},(err,data)=>{if(err){console.log("更新失败")return}console.log(data)}// 批量更新BookModel.updateMany({author:"余华"},{is_hot:true},(err,data)=>{if(err){console.log("更新失败")return}console.log(data)}//项目运行过程中,不会添加该代码mongoose.disconnect();
})

读取文档

mongoose.connection.on('open',()=>{//5.创建文档的结构对象//设置集合中文档的属性以及属性值的类型let BookSchema =new mongoose.Schema({name:String,author:String,price:Number})//6.创建模型对象。对文档操作的封装对象let BookModel = mongoose.model('book',BookSchema) //数据库名(集合),数据库表名(结构对象)// 读取BookModel.findOne({name:"红楼梦"},(err,data)=>{if(err){console.log("读取失败")return}console.log(data)}// 根据id获取BookModel.findById("a124s",(err,data)=>{if(err){console.log("读取失败")return}console.log(data)}// 批量读取BookModel.find({author:"余华"},(err,data)=>{if(err){console.log("读取失败")return}console.log(data)}// 读取allBookModel.find((err,data)=>{if(err){console.log("读取失败")return}console.log(data)}//项目运行过程中,不会添加该代码mongoose.disconnect();
})

条件控制

运算符

在mongodb不能> < >= <= !==等运算符,需要使用替代符号
> 使用$gt
<使用$lt
>=使用$gte
<=使用$lte
!==使用$ne

BookeModel.find({price:{$lt:20}},(err,data)=>{if(err){console.log("读取失败")return}console.log(data)
})

逻辑运算

$or逻辑或的情况

BookeModel.find({$or:[{author:"曹雪芹"},{author:"余华"}]},(err,data)=>{if(err){console.log("读取失败")return}console.log(data)
})

$and逻辑与的情况

BookeModel.find({$and:[{price:{$gt:30}},{price:{$lt:70}}]},(err,data)=>{if(err){console.log("读取失败")return}console.log(data)
})

正则匹配

BookeModel.find({name://},(err,data)=>{if(err){console.log("读取失败")return}console.log(data)
})
BookeModel.find({name:new RegExp('三')},(err,data)=>{if(err){console.log("读取失败")return}console.log(data)
})

个性化读取

字段筛选

//0:不要的字段
//1:要的字段
SongModel.find().select({_id:0,title:1}).exec(function(err,data)if(err) throw err;console.log(data);mongoose.connection.close(); //mongoose.disconnect();
});

数据排序

//sort排序
//1:升序
//-1:倒序
SongModel.find().sort({hot:1}).exec(function(err,data)if(err) throw err;console.log(data);mongoose.connection.close() //mongoose.disconnect();
});

数据截取

//skip跳过limit限定
SongModel.find().skip(10).limit(10).exec(function(err,data)if(err) throw err;console.log(data);mongoose.connection.close(); //mongoose.disconnect();
});

代码模块化

#TODO
在这里插入图片描述

相关文章:

mongoose学习记录

mongoose安装和连接数据库 npm i mongoose导入mongoose const mongoose require(mongoose) mongoose.set("strictQuery",true)连接数据库 mongoose.connect(mongodb:127.0.0.1:27017/test)设置回调 mongoose.connection.on(open,()>{console.log("连接成…...

边缘与云或边缘加云:前进的方向是什么?

边缘计算使数据处理更接近数据源&#xff0c;以及由此产生的行动或决策的对象。通过设计&#xff0c;它可以改变数十亿物联网和其他设备存储、处理、分析和通信数据的方式。 边缘计算使数据处理更接近数据源&#xff0c;以及由此产生的行动或决策的对象。这与传统的体系结构形成…...

蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解

题目 思路和解题方法 方案一——遍历哈希表 仅能过60%样例,大多数同学都用的该方法&#xff0c;就不过多赘述 #include <iostream> #include <unordered_map> using namespace std; int main() {string s;cin >> s;int n s.size();int res n;for (int i 0…...

力扣题:字符串的反转-11.23

力扣题-11.23 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;557. 反转字符串中的单词 III 解题思想&#xff1a;先读取单词&#xff0c;然后将单词进行翻转即可 class Solution(object):def reverseWords(self, s):""":type s…...

【软件测试】盘一盘工作中遇到的 Redis 异常测试

在测试工作中&#xff0c;涉及到与 redis 交互的场景变的越来越多了。关于redis本身就不作赘述了&#xff0c;网上随便搜&#xff0c;本人也做过一些整理。 今天只来复盘一下&#xff0c;在测试过程中与 redis 的二三事儿。其中提到的案例是经过抽象化的&#xff0c;用作辅助说…...

14.Oracle中RegExp_Like 正则表达式基本用法

--基本用法&#xff0c;是否包含某字符串 like %36% select * from k_micfo where regexp_like(loginid,36);if regexp_like(str,^[0-9\.]$) --只包含数字0-9&#xff0c;,小数点.--oracle判断字段是否是纯数字 (四种写法结果一样&#xff09; select * from k_micfo where r…...

Docker Swarm总结+Jenkins安装配置与集成(5/5)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…...

docker安装Sentinel zipkin

文章目录 引言I Sentinel安装1.1 运行容器1.2 DOCKERFILE 参考1.3 pom 依赖1.4 .yml配置(整合springboot)II 资源保护2.1 Feign整合Sentinel2.2 CommonExceptionAdvice:限流异常处理类III zipkin引言 消息服务和请求第三方服务可不配置Sentinel。 </...

利用python实现文件压缩打包的功能

主要是利用了zipfile实现文件压缩打包&#xff0c;简单实例代码如下&#xff1a; import zipfilewith zipfile.ZipFile("archive.zip",w) as zipf:zipf.write("config.ini")zipf.write("test.py") 其中的模式 w表示如果没有该文件则创建该文件…...

如何创建百科?建立百科词条的意义何在?九问百科营销

在营销工作实践中&#xff0c;小马识途营销顾问经常接到关于百科营销的咨询&#xff0c;现整理了最受关注的九个问题分享给热爱营销工作的小伙伴。 一、什么是百科营销&#xff1f; 百科营销是借助百科知识传播&#xff0c;可以将企业、品牌、人物所拥有的对用户有价值的信息&a…...

Django如何设置时区为北京时间?

Django默认使用的是UTC时间&#xff0c;北京时间比UTC早8个小时&#xff0c;即如果UTC是凌晨两点&#xff0c;那么北京时间是早上八点。 Django中把setting.py中的语句&#xff1a; TIME_ZONE UTC修改为&#xff1a; TIME_ZONE Asia/Shanghai就把时区改为了北京时间。 这…...

Basemap地图绘制_Python数据分析与可视化

Basemap地图绘制 安装和使用地图投影地图背景在地图上画数据 Basemap是Matplotlib的一个子包&#xff0c;负责地图绘制。在数据可视化过程中&#xff0c;我们常需要将数据在地图上画出来。 比如说我们在地图上画出城市人口&#xff0c;飞机航线&#xff0c;军事基地&#xff0c…...

C#编程题分享(5)

判断质数问题 输⼊⼀个正整数&#xff0c;判断该数是否是质数。如果为质数输出 yes&#xff0c;如果不是输出no 样例输⼊113 输出yes int n Convert.ToInt32(Console.ReadLine()); int count 0; for (int i 1; i < n 1; i) {if (n % i 0) // 判断该数能被整除{coun…...

群晖Video Station 添加海报墙-新方法

海报墙 一般我们找到的都是mp4、mkv等格式的视频资源&#xff0c;而没有像上图这样的海报资源&#xff0c;那要怎样实现海报墙呢&#xff1f; 按照以前的方法&#xff0c;是可以通过The Movie Database的API Key来搜刮电影海报信息&#xff0c;但是现在这个方法不行了 现在介绍…...

【MODBUS】Modbus协议入门简介

Modbus&#xff08;Modicon Communication Protocol&#xff09;是一种用于工业自动化领域的通信协议&#xff0c;最初由Modicon&#xff08;现在是施耐德电气的一部分&#xff09;开发。Modbus协议被广泛应用于连接不同厂商的工业设备&#xff0c;实现设备之间的通信和数据交换…...

ORA-00257: archiver error. Connect internal only, until freed……

今天给客户测 试问题&#xff0c;让客户把数据发过来了。解压缩后一看&#xff0c;他们还是用的oracle 815版本的(他们exp导出时&#xff0c;带了导出日志&#xff0c;从导出日志中看出来是oracle 815版本的)&#xff0c;不过没有关系&#xff0c;低版本的exp是可以用高版本的i…...

继承 和 多肽(超重点 ! ! !)

[本节目标] 1.继承 2.组合 3.多肽 1.继承 1.1 为什么要继承 Java中使用类对现实世界中实体来进行描述&#xff0c;类经过实例化之后的产物对象&#xff0c;则可以用来表示现实中的实体&#xff0c;但是现实世界错综复杂&#xff0c;事物之间可能会存在一些关联&#xff0…...

H265、VP9、AV1视频编码器性能对比

1、背景介绍 目前在视频编解码器中,H264 已经成为绝对的主流,被大部分设备、浏览器所支持。虽然有更先进的编码器推出,但是受限于推广速度和设备支持成本,一直未能成为主流。 今年公司的目标是持续降本增效,现在将”屠刀“指向了视频业务的存储成本。视频文件存储主要两…...

C语言-结构体

---------------------------- ------------------ 岁月漫长心怀热爱&#xff0c;携手共赴星辰大海 --------今天来到我们自定义类型 -----结构体的讲解 目录 结构体的类型声明和初始化 结构体的类型声明 结构体成员的直接访问 结构体成员的间接访问 嵌套结构体进行访问 使用…...

C#拼夕夕自动化登录,电商网页自动化操作。WebView2

单纯靠WebView2是没办法通过JS实现自动登录操作的&#xff0c;包括浏览器插件&#xff0c;都不行&#xff0c;因为大公司对反爬机制控制的还是挺严格。 下面是实现效果&#xff0c;私信我&#xff0c;咨询解决方案。 20231202_153912 C#有偿Q群&#xff1a;927860652博客仅为…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...