node教程(四)Mongodb+mongoose
文章目录
- 一、mongodb
- 1.简介
- 1.1Mongodb是什么?
- 1.2数据库是什么?
- 1.3数据库的作用
- 1.4数据库管理数据的特点
- 2.核心概念
- 3.下载安装与启动
- 4.命令行交互
- 4.1数据库命令
- 4.3文档命令
- 二、Mongoose
- 1.介绍
- 2.作用
- 3.使用流程
- 4.插入文档
- 5.mongoose字段类型
一、mongodb
1.简介
1.1Mongodb是什么?
Mongodb是一个基于分布式文件存储的数据库
1.2数据库是什么?
数据库是按照数据结构来组织、存储和管理数据的应用程序。
1.3数据库的作用
主要作用就是管理数据,对数据进行增删改查
1.4数据库管理数据的特点
相比于纯文件,数据库管理数据具有如下特点:
1.速度更快
2.拓展性更强
3.安全性更强
2.核心概念
2.核心概念
Mongodb中有三个重要概念
- 数据库是一个数据仓库,数据库服务下可以创建很多数据库,数据库中可以存放很多集合
- 集合:集合类似于JS中的数组,在集合中可以存放很多文档
- 文档:文档是数据库中的最小单位,类似于JS中的对象
3.下载安装与启动
https://www.mongodb.com/try/download/community
千万不要选中服务端窗口的内容,选中会停止服务,可以敲回车取消选中
4.命令行交互
4.1数据库命令
1.显示所有的数据库
show dbs
2.切换到指定的数据库,如果数据库不存在则会自动创建数据库
use 数据库名
3.显示当前所在数据库
db
4.删除当前数据库
use 库名
db.dropDatabase()
4.2集合命令
1.创建集合
db.createCollection('集合名称')
2.显示当前数据库中的所有集合
show collections
3.删除某个集合
db.集合名.drop()
4.重命名集合
db.集合名.renameCollection('new name')
4.3文档命令
1.插入文档
db.集合名.insert('文档对象')
2.查询文档
db.集合名.find(查询条件)
_id是mongodb自动生成的唯一编号,用来唯一标识文档
3.更新文档
db.集合名.update(查询条件,新的文档)
db.集合名.update({name:'张三'},{$set:{age:19}})
4.删除文档
db.集合名.remove(查询条件)
二、Mongoose
1.介绍
是一个对象文档模型库
2.作用
方便使用代码操作mongodb数据库
3.使用流程
// 安装mongoose
// 导入mongoose
const mongoose = require('mongoose');// 连接mongodb服务 数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/abc')/* 设置回调 */
mongoose.connection.on('open',() => {console.log('连接成功');
}); // 设置连接成功的回调
mongoose.connection.on('error',() => {console.log('连接失败');
}); //连接失败的回调
mongoose.connection.on('close',() => {console.log('连接关闭');
}); //设置连接关闭的回调// 关闭mongodb的连接
setTimeout(() => {mongoose.disconnect();
},2000)
4.插入文档
出现以下问题
throw new MongooseError('Model.create() no longer accepts a callback');
是由于mongoose版本太高,可以手动降级
npm i mongoose@6.8.0
// 安装mongoose
// 导入mongoose
const mongoose = require('mongoose');// 连接mongodb服务 数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/abc')/* 设置回调 */
mongoose.connection.once('open',() => {// console.log('连接成功');// 5.创建文档的结构对象// 设置集合中文档的属性以及属性值的类型let BookSchema = new mongoose.Schema({name:String,author: String,price: Number});// 创建模型对象 对文档操作的封装对象let BookModel = mongoose.model('books',BookSchema);// 新增BookModel.create({name:'xiyouji',author:'吴承恩',price:19.9},(err,data) => {if(err){console.log(err);return;}// 如果没有出错,则输出插入后的文档对象console.log(data);// 关闭数据库连接(项目运行过程中不会添加此代码)mongoose.disconnect();});}); // 设置连接成功的回调mongoose.connection.on('error',() => {console.log('连接失败');
}); //连接失败的回调
mongoose.connection.on('close',() => {console.log('连接关闭');
}); //设置连接关闭的回调
5.mongoose字段类型
文档结构可选的常用字段类型列表
// 安装mongoose
// 导入mongoose
const { Mixed } = require('mongoose');
const mongoose = require('mongoose');// 连接mongodb服务 数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/abc')/* 设置回调 */
mongoose.connection.once('open',() => {// console.log('连接成功');// 5.创建文档的结构对象// 设置集合中文档的属性以及属性值的类型let BookSchema = new mongoose.Schema({name:String,author: String,price: Number,is_hot:Boolean,tags:Array,pub_time:Date,test:mongoose.Schema.Types.Mixed });// 创建模型对象 对文档操作的封装对象let BookModel = mongoose.model('books',BookSchema);// 新增BookModel.create({name:'xiyouji',author:'吴承恩',price:19.9,is_hot:true,tags:['鬼怪','励志'],pub_time:new Date(),test:'abc'},(err,data) => {if(err){console.log(err);return;}// 如果没有出错,则输出插入后的文档对象console.log(data);// 关闭数据库连接(项目运行过程中不会添加此代码)mongoose.disconnect();});}); // 设置连接成功的回调mongoose.connection.on('error',() => {console.log('连接失败');
}); //连接失败的回调
mongoose.connection.on('close',() => {console.log('连接关闭');
}); //设置连接关闭的回调
相关文章:

node教程(四)Mongodb+mongoose
文章目录 一、mongodb1.简介1.1Mongodb是什么?1.2数据库是什么?1.3数据库的作用1.4数据库管理数据的特点 2.核心概念3.下载安装与启动4.命令行交互4.1数据库命令4.3文档命令 二、Mongoose1.介绍2.作用3.使用流程4.插入文档5.mongoose字段类型 一、mongod…...

作为一个初学者,该如何入门大模型?
在生成式 AI 盛行的当下,你是否被这种技术所折服,例如输入一段简简单单的文字,转眼之间,一幅精美的图片,又或者是文笔流畅的文字就展现在你的面前。 相信很多人有这种想法,认为生成式 AI 深不可测…...
编译支持GPU的opencv,并供python的import cv2调用
下载opencv和opencv_contrib,cmake过程中要下载的一些包可以手动下载配置,如果网络较好,也可以等待自动下载。主要记录的是cmake命令: cmake -D CMAKE_BUILD_TYPERELEASE \-D BUILD_opencv_python3YES \-D CMAKE_INSTALL_PREFIX/…...
Bug记录
那些年写过的很小的bug: Bug1: if args.model IRNN or irnn:# some code这实际上不会按你期望的方式工作。原因在于 ‘irnn’ 是一个非空的字符串,因此它在布尔上下文中被视为 True。所以条件总是为真,而不会考虑 args.model 的…...

web3 React dapp中编写balance组件从redux取出并展示用户资产
好啊 上文WEB3 在 React搭建的Dapp中通过redux全局获取并存储用户ETH与自定义token与交易所存储数量中 我们拿到了用户的一个本身 和 交易所token数量 并放进了redux中做了一个全局管理 然后 我们继续 先 起来ganache的一个模拟环境 ganache -d然后 我们启动自己的项目 顺手发…...

BIOS开发笔记 - DDR中的时序参数
通过前一篇文章学习,我们可以大致知道内存条(Module)的组成及SDRAM内部的结构,这一篇再介绍下SDRAM中常见的时序参数以及整个读写操作的流程。 一、外部信号 图1 DDR4的外部线路图 DDR是一种高带宽的传输接口,其外部信号较多,图1是一个DDR4的外部线路图,以下对图中跟通…...
语义分割 - 简介
语义分割是计算机视觉领域的一项重要任务,旨在将图像中的每个像素标记为对应的语义类别。与传统的图像分类任务不同,语义分割不仅要识别整个图像的类别,还需要对图像中的每个像素进行分类,从而实现对图像的像素级别理解。 语义分…...

ch0_OSI 七层网络协议介绍
目录 概述 1、三网融合的概念 三网:电信网络、有线电视网络、计算机网络 概念:把上述三种网络融合成一种网络 2、计算机网络的定义、分类 定义:计算机网络是将地理位置不同的独立计算机系统,通过传输介质链接起来,…...

超声波俱乐部分享:百度世界大会点燃AI创业者新希望
10月22日,2023年第十三期超声波俱乐部内部分享会在北京望京举行。本期的主题是:百度世界大会点燃AI创业者新希望。 到场的嘉宾有:超声波创始人杨子超,超声波联合创始人、和牛商业创始人刘思雨,中国国际经济交流中心研…...

【项目管理】项目计划中常见影响进度的风险汇总
哈喽,大家好,我是雷工。 在项目实施过程中针对项目进度的计划常常会有各种各样的的风险,相比出了问题去救火与填坑,能够提前预知风险,并提前调整计划,更能有利于项目的如期交付。 以下为项目计划中影响进度…...

Apache HttpClient库编写的Scala程序
Apache HttpClient库编写的Scala下载器程序,用于下载图片。代码如下: import org.apache.http.HttpHost import org.apache.http.client.HttpClients import org.apache.http.client.methods.HttpHead import org.apache.http.impl.client.CloseableHtt…...

Java 为什么不推荐在 while 循环中使用 sleep() 我悟了
文章目录 前言原因是否正确方案是否合理定时轮询场景事件机制等待和唤醒 个人简介 前言 最近逛 CSDN 看到一篇文章,文章大意是说为什么在循环中不推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 Schedu…...
编程新手的犯错之路
第1名:无尽的if-else陷阱 在我刚刚学习编程的时候,我对if-else语句的使用充满了好奇。我曾经写下了这样一个愚蠢的代码块,用来判断一个数字属于哪个范围: if (number > 1 && number < 10) {// 做一些事情 } else …...

高级 Python:函数
伊利亚拉扎列维奇 一、说明 读完标题后,你可能会问自己一些类似的事情,“Python 中的函数是一个高级概念?如何?所有课程都引入了功能作为语言的基本块。你既是对的,也是错的。 大多数关于 Python 的课程都将函数作为基…...
【学习笔记】[PA2019] Osady i warownie 2
这题好抽象😱 EI 说这题可以转化为对偶图,但是我完全没看懂😅 考虑维护最向右和向下的两条路径,那么不能放的位置就是两条路径的交(感性理解一下) 考虑抽象的描述这条路径, r i r_i ri表示…...

Flask——接口路由技术
接口路由技术 一、Flask 简介1、环境安装:2、一个最小的应用3、两种运行方式 二、定义路由1、普通路由2、动态路由3、限定类型4、地址尾部的“/” 三、请求与响应-请求方法四、请求与响应-处理请求数据1、request的常用属性/方法2、get 请求参数3、json 请求4、表单…...

Dubbo篇---第一篇
系列文章目录 文章目录 系列文章目录一、说说一次 Dubbo 服务请求流程?二、说说 Dubbo 工作原理三、Dubbo 支持哪些协议?一、说说一次 Dubbo 服务请求流程? 基本工作流程: 上图中角色说明: 二、说说 Dubbo 工作原理 工作原理分 10 层: 第一层:service 层,接口层,…...
powermock-成员变量赋值
powermock成员变量设置 //被测试类 Service public class Demo {private String aaa ;public String method1(){return aaa;} }//测试类,测试类中使用了mockito、和powermock,用powermock设置成员变量相较于mockito简洁一些,一般mockito和po…...
Axios请求成功和失败时分别执行哪个函数?
在 Axios 中,请求成功和失败时分别执行的函数是 then 和 catch。 特点: then 函数用于处理请求成功的情况,它接受一个回调函数作为参数,在请求成功时会调用该回调函数。catch 函数用于处理请求失败的情况,它也接受一…...

【Linux】进程概念III --fork函数解析
Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法…感兴趣就关注我吧!你定不会失望。 本篇导航 0. 创建进程1. 认识fork函数2.使用Fork函数3.关于fork的为什么3.1 一个函数如何返回两次?fork究竟在干什么?3.2 为什么要给子…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...