mongoose6.0版以上操作mongodb数据库的基本使用

1、介绍

Mongoose 是一个对象文档模型库,官网 http://www.mongoosejs.net/

2、作用

方便使用代码操作 mongodb 数据库

3、使用流程

3.1、链接数据库

//1. 安装 mongoose--->  npm install mongoose --save

//2. 导入 mongoose
const mongoose = require("mongoose");
//3. 连接数据库   mongodb://127.0.0.1:27017+数据库名字
mongoose.connect("mongodb://127.0.0.1:27017/col");
//4. 设置连接回调
//连接成功
mongoose.connection.on("open", () => {
  console.log("连接成功");
});

//连接出错
mongoose.connection.on("error", () => {
  console.log("连接出错~~");
});

//连接关闭
mongoose.connection.on("close", () => {
  console.log("连接关闭");
});

3.2、在数据表里面添加数据

字段类型:

//2. 导入 mongoose
const mongoose = require("mongoose");
//3. 连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/col");

//4. 设置连接回调
//连接成功
mongoose.connection.on("open", () => {
  console.log("连接成功");
  // 声明数据量文档的字段类型。类似ts的定义
  const bookSchema = new mongoose.Schema({
    id: Number,
    name: String,
    num: Number,
  });
  // 声明往那个集合(表)添加数据,没有该集合会自动创建,这里集合名字books,并定义集合的文档类型
  const bookModel = mongoose.model("book", bookSchema);
  // 往该集合添加数据
  bookModel
    .insertMany([
      {
        id: 6,
        name: "多多",
        num: 2,
      },
      {
        id: 7,
        name: "公告",
        num: 5,
      },
      {
        id: 8,
        name: "更换",
        num: 4,
      },
      {
        id: 9,
        name: "观后感",
        num: 8,
      },
    ])
    .then((data) => {
      console.log("插入文本success", data);
      // mongoose.connection.close();
    })
    .catch((err) => {
      if (err) throw err;
    });
});

//连接出错
mongoose.connection.on("error", () => {
  console.log("连接出错~~");
});

//连接关闭
mongoose.connection.on("close", () => {
  console.log("连接关闭");
});
// setTimeout(() => {
//   // 断开与 MongoDB 的连接并关闭数据库
//   mongoose.connection.close();
//   mongoose.disconnect();
// }, 2000);

3.3、删除数据

//2. 导入 mongoose
const mongoose = require("mongoose");
//3. 连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/col");
//4. 设置连接回调
//连接成功
mongoose.connection.on("open", () => {
  console.log("连接成功");
  const bookSchema = new mongoose.Schema({
    id: Number,
    name: String,
    num: Number,
  });
  const bookModel = mongoose.model("book", bookSchema);
  // 删除books集合中,文档id为3的一条数据
  bookModel
    .deleteOne({ id: 3 })
    .then((data) => {
      console.log("删除成功", data);
    })
    .catch((err) => {
      console.log("删除失败");
    });
  // 删除books集合中,满足条件num为55的所有文档
  // bookModel
  //   .deleteMany({ num: 55 })
  //   .then((data) => {
  //     console.log("删除成功", data);
  //   })
  //   .catch((err) => {
  //     console.log("删除失败");
  //   });
});

//连接出错
mongoose.connection.on("error", () => {
  console.log("连接出错~~");
});

//连接关闭
mongoose.connection.on("close", () => {
  console.log("连接关闭");
});

3.4、修改数据

//2. 导入 mongoose
const mongoose = require("mongoose");
//3. 连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/col");
//4. 设置连接回调
//连接成功
mongoose.connection.on("open", () => {
  console.log("连接成功");
  const bookSchema = new mongoose.Schema({
    id: Number,
    name: String,
    num: Number,
  });
  const bookModel = mongoose.model("book", bookSchema);
  // 更新一条数据
  bookModel
    .updateOne({ id: 2 }, { name: "22" })
    .then((data) => {
      console.log("更新成功", data);
      mongoose.connection.close();
    })
    .catch((err) => {
      console.log("更新失败");
      mongoose.connection.close();
    });
  // 更新多条数据,符合条件的数据全部更新
  // bookModel
  //   .updateMany({ id: 2 }, { name: "22" })
  //   .then((data) => {
  //     console.log("更新成功", data);
  //     mongoose.connection.close();
  //   })
  //   .catch((err) => {
  //     console.log("更新失败");
  //     mongoose.connection.close();
  //   });
});

//连接出错
mongoose.connection.on("error", () => {
  console.log("连接出错~~");
});

//连接关闭
mongoose.connection.on("close", () => {
  console.log("连接关闭");
});

3.5、查找数据

//2. 导入 mongoose
const mongoose = require("mongoose");
//3. 连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/col");
//4. 设置连接回调
//连接成功
mongoose.connection.on("open", () => {
  console.log("连接成功");
  const bookSchema = new mongoose.Schema({
    id: Number,
    name: String,
    num: Number,
  });
  const bookModel = mongoose.model("book", bookSchema);
  // 读取单条
  bookModel
    .findOne({ id: 2 })
    .then((data) => {
      console.log("读取成功", data);
    })
    .catch((err) => {
      console.log("读取失败");
    });

  //根据 ID 获取文档
  // bookModel
  //   .findById("63f34af50cf203761ede1896")
  //   .then((data) => {
  //     console.log("读取成功", data);
  //   })
  //   .catch((err) => {
  //     console.log("读取失败");
  //   });

  //读取所有
  // bookModel
  //   .find()
  //   .then((data) => {
  //     console.log("读取成功", data);
  //   })
  //   .catch((err) => {
  //     console.log("读取失败");
  //   });
});

//连接出错
mongoose.connection.on("error", () => {
  console.log("连接出错~~");
});

//连接关闭
mongoose.connection.on("close", () => {
  console.log("连接关闭");
});

3.6、 条件查询

//价格小于 20 的图书
  BookModel.find({ price: { $lt: 20 } })
    .then((data) => {
      console.log("查询成功", data);
      mongoose.connection.close();
    })
    .catch((err) => {
      console.log("查询失败");
      mongoose.connection.close();
    });

  //曹雪芹 或者 余华的书
  // BookModel.find({ $or: [{ author: "曹雪芹" }, { author: "余华" }] })
  //   .then((data) => {
  //     console.log("查询成功", data);
  //     mongoose.connection.close();
  //   })
  //   .catch((err) => {
  //     console.log("查询失败");
  //     mongoose.connection.close();
  //   });

  //价格大于 30 且小于 70
  // BookModel.find({ $and: [{ price: { $gt: 30 } }, { price: { $lt: 70 } }] });
  // .then((data) => {
  //   console.log("查询成功", data);
  //   mongoose.connection.close();
  // })
  // .catch((err) => {
  //   console.log("查询失败");
  //   mongoose.connection.close();
  // });

  //正则表达式, 搜索书籍名称中带有 `三` 的图书
  // BookModel.find({ name: /三/ });
  // .then((data) => {
  //   console.log("查询成功", data);
  //   mongoose.connection.close();
  // })
  // .catch((err) => {
  //   console.log("查询失败");
  //   mongoose.connection.close();
  // });

3.7、个性化读取

(1)字段筛选

//0:不要的字段
//1:要的字段
SongModel.find().select({_id:0,title:1}).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});

(2)数据排序

//sort 排序
//1:升序
//-1:倒序
SongModel.find().sort({hot:1}).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});

(3)数据截取

//skip 跳过 limit 限定
SongModel.find().skip(10).limit(10).exec(function(err,data){
if(err) throw err;
console.log(data);
mongoose.connection.close();
});

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

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

相关文章

网络安全B模块(笔记详解)- 网络渗透测试

LAND网络渗透测试 1.进入虚拟机操作系统:BT5中的/root目录,完善该目录下的land.py文件,填写该文件当中空缺的Flag1字符串,将该字符串作为Flag值(形式:Flag1字符串)提交;(land.py脚本功能见该任务第6题) 输入flag sendp(packet) Flag:sendp(packet) 2.进入虚拟机操作…

鸿蒙Harmony-PersistentStorage--持久化存储UI状态储详解

用简单的心境,对待复杂的人生,方能看淡得失,从容入世,潇洒自如,心变得简单了,世界也就简单了 目录 一,定义 二,限制条件 三,使用 一,定义 LocalStorage和App…

Open3D AABB包围盒计算与使用(19)

Open3D AABB包围盒计算与使用(19) 一、算法速览二、算法实现1.代码2.结果少年听雨歌楼上。红烛昏罗帐。壮年听雨客舟中。江阔云低、断雁叫西风。 而今听雨僧庐下。鬓已星星也。悲欢离合总无情。一任阶前、点滴到天明。 一、算法速览 AABB包围盒就是将点云用一个各条边沿着坐…

Android Studio 虚拟机 Unknown Error 解决

前言 尝试了网上很多解决方式,但很遗憾,都没效果; 于是我就想啊🤔,虚拟机属于SDK的一部分,那有没有一种可能,是SDK出了问题; 于是我就换了新的SDK,结果 ---- 完美解决…

halcon学习-blob分析统计木材个数

本文用到的主要算子简单介绍如下: 1、矩形结构开运算opening_rectangle1(); 2、圆形结构腐蚀运算erosion_circle(); 3、统计非连通区域个数count_obj(); 4、合并非连通区域concat_obj(); *读取图像 read_image(image,../wood.jpg) *图像转灰度 rgb1_to_gray(image,…

爬虫补环境jsdom、proxy、Selenium案例:某条

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、简介 爬虫逆向补环境的目的是为了模拟正常用户的行为,使爬虫看起来更像是一个真实的用户在浏览网站。这样可以…

《最新出炉》系列入门篇-Python+Playwright自动化测试-9-页面(page)

1.简介 通过前边的讲解和学习,细心认真地小伙伴或者童鞋们可能发现在Playwright中,没有Element这个概念,只有Page的概念,Page不仅仅指的是某个页面,例如页面间的跳转等,还包含了所有元素、事件的概念&#…

大数据仓库开发规范示例

大数据仓库开发规范示例 一、前提概要二、数仓分层原则及定义2.1 数仓分层原则2.2 数仓分层定义 三、数仓公共开发规范3.1 分层调用规范3.2 数据类型规范3.3 数据冗余规范3.4 NULL字段处理规范3.5 公共字段规范3.6 数据表处理规范3.7 事实表划分规范 四、数仓各层开发规范4.1 分…

Linux配置JAR包为服务实现自启动

一、实现bash脚本 1.1 绘图工具 绘图需安装idea的插件plantUML-Integration 只需要上图一个就可以,别的也不需要装。 启动服务的逻辑如下 关闭服务的逻辑如下 1.2 逻辑实现 在/root路径下创建entrance文件,实现逻辑如下 #!/usr/bin/env bash # 2>…

【120版本】最新谷歌浏览器驱动下载地址

在使用selenium时可能会遇到谷歌浏览器和谷歌驱动器版本不一致的问题,并且国内可以搜到的谷歌浏览器下载地址里面最新的驱动器只有114版本的,但目前谷歌浏览器最新版本是120。所以这里记录下最新版本120谷歌驱动器下载地址: Chrome for Test…

spark中Rdd依赖和SparkSQL介绍--学习笔记

1,RDD的依赖 1.1概念 rdd的特性之一 相邻rdd之间存在依赖关系(因果关系) 窄依赖 每个父RDD的一个Partition最多被子RDD的一个Partition所使用 父rdd和子rdd的分区是一对一(多对一) 触发窄依赖的算子 map()&…

强化学习应用(七):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个价值函数来指导智能体在环境中做出决策,以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

【每日小bug】mybatis plus id注解错误导致的问题

插入数据 id不为自增 指定了主键,没有指定自增。会导致出现 修改如上 报错 Data truncation: Out of range value for column ‘id’ at row 1 数据库是bigint,java中是Integer。 修改如上

GCC工具源码编译

文章目录 背景一、下载源码二、编译前依赖准备2.1 相关工具依赖2.2 相关lib(gmp/ mpfr /mpc)依赖2.2.1 lib源码下载2.2.2 lib源码编译 三、编译GCC3.1 编译3.2 链接 四、报错处理 背景 日常可能涉及到系统里自带GCC版本与被编译源码存在不兼容&#xff…

1 - Spring 基本介绍

官网:https://spring.io/ Spring 是一个可以管理整合其他框架的框架 1. IOC 开发模式 程序不再负责对象的创建,而是直接使用ioc容器的对象来完成相关的业务逻辑 1.1 控制反转实现思想 1)Spring 根据配置文件 xml/注解,创建对象…

AR HUD全面「上新」

AR HUD赛道正在迎来新的时代。 上周,蔚来ET9正式发布亮相,新车定位为D级行政旗舰轿车,其中,在智能座舱交互层面,继理想L系列、长安深蓝S7之后,也首次取消仪表盘,取而代之的是业内首个全焦段AR H…

9.5.1 函数模板特化

函数模板 有了泛化版本比较函数&#xff0c;我们可以比较两个整数&#xff0c;两个字符&#xff0c;两个指针 6~10行&#xff0c;是一个函数模板 13~16行&#xff0c;都可以得到正常结果 22行&#xff0c;得到的结果是&#xff0c;"A001" < "A000", …

亚马逊时尚如何运用人工智能帮助您找到合适的尺码

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

命令行(无图形界面)登录dlut-lingshui

1 登录原理 利用python的requests库向校园网认证服务器发送认证请求。 2 登录步骤 获取校园网认证界面的用户名和密码。用户名是自己学号&#xff1b;密码由网页加密&#xff0c;需要一台有图形界面的电脑辅助获取&#xff0c;获取方法见下一节。把获取到的用户名和密码填入…

【AIGC】IP-Adapter:文本兼容图像提示适配器,用于文本到图像扩散模型

前言 IPAdapter能够通过图像给Stable Diffusion模型以内容提示&#xff0c;让其生成参考该图像画风&#xff0c;可以免去Lora的训练&#xff0c;达到参考画风人物的生成效果。 摘要 通过文本提示词生成的图像&#xff0c;往往需要设置复杂的提示词&#xff0c;通常设计提示词变…