【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; 阿里…

5.vue3项目(五):实现顶部导航栏功能:导航栏静态搭建,菜单折叠功能实现,面包屑动态展示路径,刷新页面功能,全屏功能

目录 一、左侧菜单栏刷新,不要合并菜单 二、顶部tabbar静态搭建 1.新建文件 2.编辑页面 3.结果测试

数字摘要的概念和应用(文件完整性检查、密码存储、消息认证码)(哈希函数、哈希算法)(将任意长度的消息变成固定长度的短消息)

文章目录 数字摘要的概念和应用数字摘要的基本原理数字摘要的性质1. 不可逆性&#xff1a;从数字摘要无法反推出原始输入。这意味着&#xff0c;如果你只知道H(m)&#xff0c;那么你无法得知m的具体内容。&#xff08;除非暴力破解&#xff09;2. 唯一性&#xff1a;对于不同的…

遇到java.security.AccessControlException:access denied怎么办?

今天工作中遇到了如下报错&#xff0c;记录一下解决方案。 目录 问题 分析 结论 问题 这个问题出现在openjdk8启动网页端Java应用。 Java Exception:java.security.AccessControlException:access denied("java.net.SocketPermission""22.188.130.11:9000…

在 M1 芯片 Mac 上使用 Homebrew

在 M1 芯片 Mac 上使用 Homebrew 1.安装brew&#xff08;国内源&#xff09;&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2.M1芯片安装完成后会出现&#xff0c;终端输入brew 会出现 zsh: command not f…

浅谈Vue 3的响应式对象: ref和reactive

Vue 3是一个流行的前端框架&#xff0c;它引入了一些新的特性来提高开发者的体验和性能。其中&#xff0c;响应式对象是 Vue 3 中一个非常重要的概念。在这篇博客中&#xff0c;我们将重点介绍 Vue 3 中的响应式对象&#xff0c;并深入探讨其中的 ref 和 reactive。 引言 在现…

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

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

LeetCode算法题解(回溯)|LeetCode93. 复原 IP 地址、LeetCode78. 子集、LeetCode90. 子集 II

一、LeetCode93. 复原 IP 地址 题目链接&#xff1a;93. 复原 IP 地址 题目描述&#xff1a; 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.…

封装公共组件中在main.js中通过插件统一注册

插件&#xff1a;插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码&#xff08;也可以注册组件&#xff09; https://cn.vuejs.org/guide/reusability/plugins.html 全局注册组件&#xff1a;https://cn.vuejs.org/guide/components/registration.html import { App } …

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

服务号和订阅号有什么区别&#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 生成对抗网络 这起源于一种思想,假如有一个生成器,从原始图片那里学习东西,一个判别器来判别图片是真实的还是生成的, 假如生成的东西能以…

Python行对齐工具difflib

1 用途 1.1 功能 对比两个字符串数组之间的差异&#xff0c;以第一个参数为基准&#xff0c;与第二个参数比较。 1.2 使用场景 一个原文件&#xff0c;一个改过的文件&#xff0c;对比差异&#xff1b;一个纯文本&#xff0c;一个带格式的&#xff0c;对比差异&#xff1b;…

渗透测试学习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…

facebook跨境电商如何做

跨境电商在Facebook上的成功需要谨慎的规划和实施&#xff0c;以下是一米软件给大家整理一些关键步骤和策略&#xff0c;帮助您在Facebook上进行跨境电商&#xff1a; 市场研究&#xff1a; 首先&#xff0c;进行市场研究&#xff0c;了解您希望进入的跨境市场&#xff0c;包括…

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

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