【mongoose】mongoose 基本使用

1. 连接数据库

// 1. 安装 mongoose
// 2. 导入 mongoose
const mongoose = require('mongoose')
// 3. 连接 mongodb 服务
mongoose.connect('mongodb://127.0.0.1:27017/xx_project')
// 4. 设置回调   .on 一直重复连接  .once 只连接一次
mongoose.connection.on('open', () => {// console.log('数据库连接成功')// 5. 创建类型约束模型对象let BookSchema = new mongoose.Schema({name: String,author: String,price: Number})// 6. 创建模型对象 对文档操作的封装对象let BookModel = mongoose.model('books', BookSchema)// 7. 新增BookModel.create({name: '《算法导论》',author: 'Thomas H.Cormen',price: 100}).then(data => {console.log(data)// 8. 关闭数据库连接(项目运行时不添加该代码)mongoose.disconnect()}).catch(err => {console.log(err)// 8. 关闭数据库连接(项目运行时不添加该代码)mongoose.disconnect()})
})
mongoose.connection.on('error', () => {console.log('数据库连接失败')
})
mongoose.connection.on('close', () => {console.log('数据库连接关闭')
})

2. 增删改查

2.1 增加

mongoose 会使用集合名称的负数,创建集合。

BookModel.create({name: '《算法导论》',author: 'Thomas H.Cormen',price: 100}).then(data => {console.log(data)// 8. 关闭数据库连接(项目运行时不添加该代码)mongoose.disconnect()}).catch(err => {console.log(err)// 8. 关闭数据库连接(项目运行时不添加该代码)mongoose.disconnect()})
  BookModel.insertMany([{name: '《算法导论》',author: 'Thomas H.Cormen',price: 100},{name: '《数据结构与算法分析》',author: 'Mark Allen Weis',price: 100}])

2.2 删除

BookModel.deleteOne({ _id: '6548d59fe5c1c46771893963' })
BookModel.deleteMany({author:'Jay'})

2.3 更新

BookModel.updateOne({name: '《算法》'
}, {$set: {price: 100000}
})
BookModel.updateMany({author: 'Leehom Wang'}, {author: '王力宏'})

2.4 查询

SongModel.findOne({author: '王力宏'})
SongModel.findById('5dd662b5381fc316b44ce167')
SongModel.find()
SongModel.find({author: '王力宏'})

3. 字段设置

在这里插入图片描述

title: {type: String,required: true,  // 必填default: '匿名'  // 默认值
}gender: {type: String,enum: ['male', 'female']  // 枚举值
},
username: {type: String,unique: true  // 唯一值
},

4. 条件控制

4.1 运算符

在 mongodb 不能 > < >= <= !== 等运算符,需要使用替代符号。

  • > 使用 $gt
  • < 使用 $lt
  • >= 使用 $gte
  • <= 使用 $lte
  • !== 使用 $ne
BookModel.find({id:{$gt:3}}); // id号比3大的所有的记录

4.2 逻辑运算

$or 逻辑或的情况

BookModel.find({$or:[{age:18},{age:24}]});

$and 逻辑与的情况

BookModel.find({$and: [{age: {$lt:20}}, {age: {$gt: 15}}]});

4.3 正则匹配

BookModel.find({name :/you/})

5. 个性化读取

方法可以链式调用。

5.1 字段筛选

1:显示
0:不显示

BookModel.find().select({name: 1, author: 1, _id: 0}).exec()
.then(data=> {console.log(data)
}).catch(err=> {console.log(err)
})

5.2 数据排序

1:升序
-1:倒序

BookModel.find().sort({price: 1}).exec()
.then(data=> {console.log(data)
}).catch(err=> {console.log(err)
})

5.3 数据截取

返回开始三个对象:

BookModel.find().sort({price: 1}).limit(3).exec()
.then(data=> {console.log(data)
}).catch(err=> {console.log(err)
})

取出第四到六个:

BookModel.find().sort({ price: 1 }).skip(3).limit(3).exec()
.then(data => {console.log(data)
}).catch(err => {console.log(err)
})

6. 代码模块化


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STA——绪论

一、概述 静态时序分析&#xff08;简称STA&#xff09;是用来验证数字设计时序的技术之一&#xff0c;另外一种验证时序的方法是时序仿真&#xff0c;时序仿真可以同时验证功能和时序。“时序分析”这个术语就是用来指代“静态时序分析“或”时序仿真“这两种方法之一&#xf…

MapReduce性能优化之小文件问题和数据倾斜问题解决方案

文章目录 MapReduce性能优化小文件问题生成SequenceFileMapFile案例 &#xff1a;使用SequenceFile实现小文件的存储和计算 数据倾斜问题实际案例 MapReduce性能优化 针对MapReduce的案例我们并没有讲太多&#xff0c;主要是因为在实际工作中真正需要我们去写MapReduce代码的场…

【江协科技-用0.96寸OLED播放知名艺人打篮球视频】

Python进行视频图像处理&#xff0c;通过串口发送给stm32&#xff0c;stm32接收数据&#xff0c;刷新OLED进行显示。 步骤&#xff1a; 1.按照接线图连接好硬件 2.把Keil工程的代码下载到STM32中 3.运行Python代码&#xff0c;通过串口把处理后的数据发送给STM32进行显示 …

阿里云99元服务器2核2G3M带宽_4年396元_新老用户均可

阿里云2核2G3M带宽99元服务器新老用户同享&#xff0c;续费不涨价&#xff0c;99元即可续费&#xff0c;可以续费到2027年&#xff0c;相当于396元买4年&#xff0c;阿里云百科aliyunbaike.com来详细说下阿里云99元服务器配置、购买条件、优惠价格和续费攻略&#xff1a; 阿里…

你是怎么理解自动化测试的?理解自动化测试的目的和本质

其实自动化测试很好理解&#xff0c;由两部分组成&#xff0c;“自动化”和“测试”&#xff0c;所以我们要理解自动化测试&#xff0c;就必须理解“自动化”和“测试”&#xff0c;只有理解了这些概念&#xff0c;才能更轻松的做好的自动化测试。其中“自动化”可以想象成通过…

服务号升级为订阅号的方法

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;我们都知道&#xff0c;服务号一个月只能发4次文章&#xff0c;但是订阅号每天都能发文章。不过在接收消息这一方面&#xff0c;服务号群发的消息有消息提醒&#xff0c;并显示在对话框&#xff1b…

word办公小技巧:方框打勾、上下标、横隔线、排序

Word文件制作过程中&#xff0c;需要了解一些可以提高效率的小技巧帮助我们能够更快的完成工作&#xff0c;今天分享四个提高效率的小技巧 技巧一&#xff1a;方框内打√ 想要在word文件中设置出方框内√&#xff0c;的效果&#xff0c;在word文件中输入&#xff1a; ☑&…

【Hugging Face】如何下载模型文件

参考文章&#xff1a; 1、mac安装Homebrew - 知乎 2、 ssh连接 git lfs install git clone githf.co:bert-base-uncased -- 安装Homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" -- 配置文件生效 source /Use…

pytorch_神经网络构建5

文章目录 生成对抗网络自动编码器变分自动编码器重参数GANS自动编码器变分自动编码器gans网络Least Squares GANDeep Convolutional GANs 生成对抗网络 这起源于一种思想,假如有一个生成器,从原始图片那里学习东西,一个判别器来判别图片是真实的还是生成的, 假如生成的东西能以…

渗透测试学习day2

文章目录 连接靶机靶机&#xff1a;Fawn 解题过程Task 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8Task 9Task 10Task 11Task 12 总结 连接靶机 详细过程可参考day1 靶机&#xff1a;Fawn 难度&#xff1a;very easy &#xff08;ftp服务的靶机&#xff09; 解题过程 T…

时间序列预测模型实战案例(十)(CNN-GRU-LSTM)通过堆叠CNN、GRU、LSTM实现多元预测和单元预测

本文介绍 本篇博客为大家讲解的是通过组堆叠CNN、GRU、LSTM个数&#xff0c;建立多元预测和单元预测的时间序列预测模型&#xff0c;其效果要比单用GRU、LSTM效果好的多&#xff0c;其结合了CNN的特征提取功能、GRU和LSTM用于处理数据中的时间依赖关系的功能。通过将它们组合在…

合肥工业大学数字逻辑实验三

** 数字逻辑 实验报告** ✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :hfut实验课设 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!…

yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)

多目标追踪实例分割目标检测 YOLO (You Only Look Once) 是一个流行的目标检测算法&#xff0c;它能够在图像中准确地定位和识别多个物体。 本项目是基于 YOLO 算法的目标跟踪系统&#xff0c;它将 YOLO 的目标检测功能与目标跟踪技术相结合&#xff0c;实现了实时的多目标跟…

【并发编程-3】线程池

对于多线程来说&#xff0c;new Thread一定是创建了线程&#xff0c;而Runnable只是一个任务&#xff0c;并没有创建新的线程。 所以&#xff0c;Runnable任务要交给线程来执行。 如果对于每个任务都创建一个线程来执行&#xff0c;显然是不合理的。 线程池就是为了复用线程来…

京东按关键词搜索商品列表接口:竞品分析,商品管理,营销策略制定

京东搜索商品列表接口是京东开放平台提供的一种API接口&#xff0c;通过调用该接口&#xff0c;开发者可以获取京东平台上商品的列表数据&#xff0c;包括商品的标题、价格、库存、月销量、总销量、详情描述、图片等信息。 接口的主要作用包括&#xff1a; 市场调研&#xff…

OSPF下的MGRE实验

一、实验要求 1、R1-R3-R4构建全连的MGRE环境 2、R1-R5-R6建立hub-spoke的MGRE环境&#xff0c;其中R1为中心 3、R1-R3...R6均存在环回网段模拟用户私网&#xff0c;使用OSPF使全网可达 4、其中R2为ISP路由器&#xff0c;仅配置IP地址 二、实验拓扑图 三、实验配置 1、给各路…

iPortal如何灵活设置用户名及密码的安全规则

作者&#xff1a;yx 目录 前言 一、配置文件介绍 1、<passwordRules>节点 注意事项&#xff1a; 2、<usernameRules>节点 二、应用实例 1、配置文件设置 2、验证扩展结果 三、结果展示 前言 SuperMap iPortal提供了扩展账户信息合规度校验规则的能力&#…

一名优秀的C++人员是怎么炼成的?

一名优秀的C人员是怎么炼成的? 优秀的程序员都是解决各种bug锻炼出来的&#xff0c;程序员每天的工作大部分时间都是在解决各种bug, 所以说多做项目才是提升能力的唯一途径&#xff0c;要不然就是花架子&#xff0c;各种技术名词、源码整的很溜&#xff0c;一如果不是喜欢 C …

WPF中依赖属性及附加属性的概念及用法

完全来源于十月的寒流&#xff0c;感谢大佬讲解 依赖属性 由依赖属性提供的属性功能 与字段支持的属性不同&#xff0c;依赖属性扩展了属性的功能。 通常&#xff0c;添加的功能表示或支持以下功能之一&#xff1a; 资源数据绑定样式动画元数据重写属性值继承WPF 设计器集成 …

阴虱是怎么长出来的?皮肤性病科主任谭巍讲述五大因素

阴虱&#xff0c;是一种皮肤接触性传染性寄生虫病&#xff0c;在卫生情况不好的前提下有感染阴虱的可能性。人在感染阴虱后会对身心健康带来负面影响&#xff0c;所产生的临床症状会直接影响感染者的工作生活&#xff0c;所以日常应注意预防阴虱病。 然而&#xff0c;到现在还…