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

node插件MongoDB(四)—— 库mongoose 操作文档使用(新增、删除、更新、查看文档)(二)

文章目录

  • 前言
      • (1)问题:安装的mongoose 库版本不应该过高导致的问题
      • (2)重新安装低版本
  • 一、插入文档
    • 1. 代码
    • 2. node终端效果
    • 3. 使用mongo.exe查询数据库的内容
  • 二、删除文档
    • 1. 删除一条
    • 2. 批量删除
    • 3. 代码
  • 三、修改文档
    • 1. 修改一条
    • 2. 批量修改
  • 四、查看文档
    • 1. 查看一条(findOne)
    • 2. 查看所有(find )
      • (1)查看所有符合条件的数据
      • (2)查看所有数据


前言

(1)问题:安装的mongoose 库版本不应该过高导致的问题

比如我默认安装8.0的版本就会报下面的错误
throw new MongooseError(‘Model.create() no longer accepts a callback’); MongooseError: Model.create() no longer accepts a callback

在这里插入图片描述

(2)重新安装低版本

npm i mongoose@6.8.0

package.json 如下图
在这里插入图片描述


一、插入文档

1. 代码

// 1:安装并导入mongoose
const  mongoose = require('mongoose')mongoose.set('strictQuery', true); // 解决终端警告的问题
// 2: 连接 mongodb 服务
// mongodb: 表示mongodb 服务,而不是http服务
// 27017 表示端口号
// test 表示数据库名
mongoose.connect('mongodb://127.0.0.1:27017/test')// 3:设置回调
// 3.1 设置连接成功的回调
// 设置连接成功的回调: once 事件回调函数只执行一次
mongoose.connection.once('open', () => {console.log('连接成功');// 4:创建文档的结构对象// 设置集合中文档的属性以及属性值的类型let userSchema = new mongoose.Schema({name: String,age: Number,sex: String})// 5:创建模型对象   对文档操作的封装对象let userModel = mongoose.model("user", userSchema)// 6: 新增userModel.create({name: '张三',age: 18,sex: '男'}, function (err, data){// err 判断是否有错误if (err) {console.log(err)return;} console.log(data);// 7:关闭数据库链接(实际项目中不会添加该代码)mongoose.disconnect();})
})
// 3.2 设置连接错误的回调
mongoose.connection.on('error', () => {console.log('连接错误');
})
// 3.3 设置连接关闭的回调
mongoose.connection.on('close', () => {console.log('连接关闭');
})

2. node终端效果

在这里插入图片描述

3. 使用mongo.exe查询数据库的内容

在这里插入图片描述

4:注意点

为什么创建的集合名和在mongo.exe中查询的名字不一样呢?

在这里插入图片描述

二、删除文档

1. 删除一条

deleteOne 删除一条数据的方法
在这里插入图片描述

在这里插入图片描述

2. 批量删除

delectMany 批量删除数据的方法
在这里插入图片描述

3. 代码

// 1:安装并导入mongoose
const  mongoose = require('mongoose')mongoose.set('strictQuery', true); // 解决终端警告的问题
// 2: 连接 mongodb 服务
// mongodb: 表示mongodb 服务,而不是http服务
// 27017 表示端口号
// test 表示数据库名
mongoose.connect('mongodb://127.0.0.1:27017/test')// 3:设置回调
// 3.1 设置连接成功的回调
// 设置连接成功的回调: once 事件回调函数只执行一次
mongoose.connection.once('open', () => {console.log('连接成功');// 4:创建文档的结构对象// 设置集合中文档的属性以及属性值的类型let userSchema = new mongoose.Schema({name: String,age: Number,sex: String})// 5:创建模型对象   对文档操作的封装对象let userModel = mongoose.model("user", userSchema)// 6: 删除一条// userModel.deleteOne({ _id: '654cf280d53122b083bea83f' }, (err, data) => {//     // err 判断是否有错误//     if (err) {//         console.log('删除失败', err)//         return;//     } //     console.log(data);// })// 7:批量删除// 删除性别为男的所有数据userModel.deleteMany({ sex: '男' }, (err, data) => {// err 判断是否有错误if (err) {console.log('删除失败', err)return;} console.log(data);})
})
// 3.2 设置连接错误的回调
mongoose.connection.on('error', () => {console.log('连接错误');
})
// 3.3 设置连接关闭的回调
mongoose.connection.on('close', () => {console.log('连接关闭');
})

三、修改文档

和删除一样,不过多描述,记住方法即可
updateOne 修改一条
updateMany 批量修改

1. 修改一条

在这里插入图片描述

2. 批量修改

在这里插入图片描述

四、查看文档

注意查看所有和删除和更新不一样,查询所有的方法是find。后面是没有Many的
findOne 查看一条
find 查看所有 (不是findMany)第一个参数不加就返回所有数据,加上就返回符合条件的所有数据。

1. 查看一条(findOne)

在这里插入图片描述

2. 查看所有(find )

(1)查看所有符合条件的数据

在这里插入图片描述

(2)查看所有数据

在这里插入图片描述

相关文章:

  • 【Linux】虚拟机连不上外网 (ping www.baidu.com不通)
  • 二叉树题目:二叉树最大宽度
  • 136. 只出现一次的数字 --力扣 --JAVA
  • Kubernetes介绍和环境部署
  • k8s 对外服务之 Ingress( LB + ingress)
  • cadence virtuoso 修改电路原理图背景颜色
  • Ansible的变量(vars,register,set_fact)
  • pandas读写json的知识点
  • docker/ nvidia-docker
  • Postman小白安装和注册入门教程
  • HCIP---OSPF思维导图
  • 内存管理
  • 基于ubuntu22.04手动安装openstack——2023.2版本(最新版)的问题汇总
  • Redis 和 Mysql 如何保证数据一致性
  • 假冒 Skype 应用程序网络钓鱼分析
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Druid 在有赞的实践
  • happypack两次报错的问题
  • HTML5新特性总结
  • Invalidate和postInvalidate的区别
  • linux学习笔记
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • Yeoman_Bower_Grunt
  • 技术发展面试
  • 码农张的Bug人生 - 初来乍到
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 如何在招聘中考核.NET架构师
  • 组复制官方翻译九、Group Replication Technical Details
  • ​低代码平台的核心价值与优势
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2)STL算法之元素计数
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转载)从 Java 代码到 Java 堆
  • **python多态
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net Application的目录
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core跨平台微服务学习资源
  • .NET Core中Emit的使用
  • .net 调用php,php 调用.net com组件 --
  • .NET的数据绑定
  • .Net多线程总结
  • .Net中的设计模式——Factory Method模式
  • .sys文件乱码_python vscode输出乱码
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面