node插件MongoDB(四)—— 库mongoose 的文档操作使用

文章目录

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


前言

(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('连接关闭');
})

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python--列表及其应用场景

1.为什么需要列表 思考:有一个人的姓名(laowang)怎么书写存储程序? 用 变量。如:name laowang 但是,如果要记录很多人的名字,怎么办? 思考: 如果一个班级100位学生,每个人的…

Vue.js 学习总结(3)—— vite 打包图片时报错 Rollup failed to resolve import...

问题 图片依赖: Vite 打包前端项目时图片无法引入,报如下错误: ERROR [vite]: Rollup failed to resolve import "%7BlibeiDanmuKongmu%7D" from "D:/java/workspace/jeecgboot-vue3/src/views/funeral/tombInfo/area.vue?…

ros自定义消息包无法编译生成.h文件的问题解决

ros自定义消息包无法编译生成.h文件的问题解决 想要创建一个ROS功能包专门存放自己自定义的消息,想将这些消息都生成.h,可以由别的功能包来调用。 但是参照网上的诸多帖子未能解决,例如 https://blog.csdn.net/feidaji/article/details/10360…

yolov5 通过视频进行目标检测

打开yolov5-master文件夹,可以看到一个名为data的文件夹,在data中创建一个新的文件夹,命名为videos。 打开yolov5-master中的detect.py可以看到一行代码(大概在245行左右)为 parser.add_argument(--source, typestr,…

逐次变分模态分解(Sequential Variational Mode Decomposition,SVMD)(附代码)

代码原理 逐次变分模态分解(Sequential Variational Mode Decomposition,SVMD)是一种用于信号处理和数据分析的方法。它可以将复杂的信号分解为一系列模态函数,每个模态函数代表了信号中的一个特定频率成分。SVMD的主要目标是提取…

ZYNQ_project:key_breath

[Synth 8-327] inferring latch for variable led_breath_reg ["C:/Users/warrior/Desktop/ZYNQ/pl/key_breath/rtl/led_breath.v":66] 因为在组合逻辑中,用了非阻塞赋值的方式赋值信号。 组合逻辑自己给自己赋值会产生组合回环,输出不稳定。 …

Android 11.0 禁止弹出系统simlock的锁卡弹窗功能实现

1.前言 在11.0的系统rom产品定制化开发中,在关于定制sim卡定制机的一款产品中,需要实现simlock锁卡功能,在系统实现锁卡功能以后,在开机的过程中,或者是在插入sim卡 后,当系统检测到是禁用的sim卡后,就会弹出simlock锁卡弹窗,要求输入puk 解锁密码,功能需求禁用这个弹…

狮子鱼社区团购小程序V18.9全开源独立版+小程序前端 安装教程

狮子鱼社区团购商城系统小程序V18.9独立开源版,该系统一直开源本身也非常完善,此系统拿来即用非常方便,同上一版一样播播资源特别优化很多细节首页美化了下,如小程序端授权窗口美化了下,该版本用户授权接口正常。功能测…

Linux本地部署1Panel现代化运维管理面板并实现公网访问

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…

基于CLIP的图像分类、语义分割和目标检测

OpenAI CLIP模型是一个创造性的突破; 它以与文本相同的方式处理图像。 令人惊讶的是,如果进行大规模训练,效果非常好。 在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D…

kubernetes集群编排(9)

目录 helm 部署helm 封装chart包 上传chart到OCI仓库 部署wordpress博客系统 helm部署storageclass helm部署ingress-nginx helm部署metrics-server kubeapps 更新 helm 部署helm 官网: Helm | 快速入门指南 https://github.com/helm/helm/releases [rootk8s2 ~]# t…

WebGL智慧城市软件项目

WebGL开发智慧城市项目时,需要考虑多个方面,包括技术、隐私、安全和可持续性。以下是一些需要注意的关键问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.隐私和数据安全…

通过docker-compose部署elk日志系统,并使用springboot整合

ELK是一种强大的分布式日志管理解决方案,它由三个核心组件组成: Elasticsearch:作为分布式搜索和分析引擎,Elasticsearch能够快速地存储、搜索和分析大量的日志数据,帮助用户轻松地找到所需的信息。 Logstash&#xf…

​【错误解决方案】ModuleNotFoundError: No module named ‘ahocorasick‘

1. 错误提示 ModuleNotFoundError: No module named ahocorasick,这意味着你试图导入一个名为 ahocorasick的模块,但Python找不到这个模块 2. 解决方案 安装缺失的模块: 如果你确定模块名称正确但仍然收到这个错误,那么可能是你没有安装这个…

2023年CCF非专业级别软件能力认证第二轮 (CSP-S)提高级C++语言试题

2023年CCF非专业级别软件能力认证第二轮 (CSP-S)提高级C语言试题 编程题第 1 题 问答题 密码锁(lock) 题目描述 小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从0到9的数字。每个拨圈都是从0到9的循环&#xf…

OmniFocus Pro for Mac(GTD时间管理软件) OmniFocus Mac版

OmniFocus Pro 3 for Mac 中文激活版是一款功能强大且灵活的 GTD 时间管理工具,可为您提供无干扰的环境,帮助您可以轻松地从邮件,消息,Safari 和任何其他第三方应用程序中安排任务,编写备注和剪辑信息。您可以快速轻松…

【OJ比赛日历】快周末了,不来一场比赛吗? #11.11-11.17 #12场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2023-11-11(周六) #5场比赛2023-11-12…

kubernetes集群编排——k8s调度

nodename vim nodename.yaml apiVersion: v1 kind: Pod metadata:name: nginxlabels:app: nginxspec:containers:- name: nginximage: nginxnodeName: k8s2 nodeName: k8s2 #找不到节点pod会出现pending,优先级最高 kubectl apply -f nodename.yamlkubectl get pod …

uniapp踩坑之项目:隐藏显示密码功能

1.input组件的password设置为动态前面加:冒号&#xff1b; 2.动态切换眼睛图标使用:style //html <view> 密码&#xff1a;<input placeholder"请输入密码" :password"openPassword" type"text" placeholder-style"color:#e2e2e2;…

C++ 图解二叉树非递归中序 + 实战力扣题

leetCode 94.二叉树的中序遍历 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 算法思路&#xff1a; 总结&#xff1a; 对中序遍历这个例子进行总结&#xff0c;找出打印“中”节点的时刻&#xff0c;来寻找本质。打印的是一棵二叉树的“中”节点&#xff0c…
最新文章