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)查看所有数据

在这里插入图片描述

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

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

相关文章

【Bug】当用opencv库的imread()函数读取图像,用matplotlib库的plt.imshow()函数显示图像时,图像色彩出现偏差问题的解决方法

一,问题描述 我们在利用opencv的imread读取本地图像,进行一系列处理,但是发现用matplotlib库的imshow()函数显示的时候出现色彩改变,比如图像偏黄,偏红,偏蓝等等,但是对…

Mybatis中limit用法补充

limit a,b a是从第a1条数据开始,b是指读取几条数据 例如:select * from table limit 0,10 这句sql语句是说从表中获取第1条开始的10条记录 前端将page:页码    pageSize:每页多少条    这两个参数,传到后台。    通过这两个参数&am…

从头开始的卷积神经网络

VGG-16 卷积神经网络。来源:LearnOpenCV 参考资料:这篇文章可以在 Kaggle Notebook 🧠 Convolutional Neural Network From Scratch上更好地阅读。路易斯费尔南多托雷斯 一、说明 本文详细介绍在tf2.0上,使用ceras实现基本的神经…

C语言仅凭自学能到什么高度?

今日话题,C语言仅凭自学能到什么高度?学习C语言的决定我确实非常推荐,毕竟它是编程领域的“通用工具”,初学者可以尝试并在发现编程的乐趣后制定长期学习计划。至于能够达到何种高度,这实在无法准确回答。即使是经验丰…

PHP中$_SERVER全局变量

在PHP中,$_SERVER 是一个全局数组变量,它包含了有关服务器和当前脚本的信息。$_SERVER 数组中的每个元素都是服务器环境的一个参数,如请求的方法、请求的 URI、客户端 IP 地址等。 PATH 系统环境变量的值,包含了多个目录的路径…

QML14、Qt之Q_PROPERTY宏理解

在初学Qt的过程中,时不时地要通过F2快捷键来查看QT类的定义,发现类定义中有许多Q_PROPERTY的东西,比如最常用的QWidget的类定义: Qt中的Q_PROPERTY宏在Qt中是很常用的,那么它有什么作用呢? Qt提供了一个绝妙的属性系统,Q_PROPERTY()是一个宏,用来在一个类中声明一个属…

2020年五一杯数学建模A题煤炭价格预测问题解题全过程文档及程序

2020年五一杯数学建模 A题 煤炭价格预测问题 原题再现 煤炭属于大宗商品,煤炭价格既受国家相关部门的监管,又受国内煤炭市场的影响。除此之外,气候变化、出行方式、能源消耗方式、国际煤炭市场等其他因素也会影响煤炭价格。请完成如下问题。…

【ArcGIS Pro微课1000例】0030:ArcGIS Pro中自带晕渲地貌工具的妙用

在ArcGIS中,制作地貌晕渲效果通常的做法是先制作山体阴影效果,然后叠加在DEM的下面,再改变DEM的透明度来实现。而在ArcGIS Pro中自带了效果显著的晕渲地貌工具。 文章目录 一、晕渲地貌工具1. 符号系统2. 栅格函数二、山体阴影效果1. 工具箱2. 栅格函数打开ArcGIS Pro3.0,加…

建造者模式(创建型)

目录 一、前言 二、建造者模式 三、链式编程实现建造者模式 四、总结 一、前言 当我们开发一个软件应用时,我们通常需要创建各种对象。有些对象是简单的,可以直接实例化,但有些对象则比较复杂,需要多个步骤才能创建完成。这时…

Leetcode刷题详解——不同路径 III

1. 题目链接:980. 不同路径 III 2. 题目描述: 在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无法跨越的…

安卓调用手机邮箱应用发送邮件

先来看看实现效果&#xff1a; 也不过多介绍了&#xff0c;直接上代码&#xff1a; private void openMail() {Uri uri Uri.parse("mailto:" "");List<ApplicationInfo> applicationInfoList getPackageManager().getInstalledApplications(Packa…

react函数式组件props形式子向父传参

父组件中定义 子组件中触发回调传值 import { useState } from "react"; function Son(params) {const [count, setCount] useState(0);function handleClick() {console.log(params, paramsparamsparamsparamsparamsparams);params.onClick(111)setCount(count 1…