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

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 深不可测&#xf…...

编译支持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、计算机网络的定义、分类 定义:计算机网络是将地理位置不同的独立计算机系统,通过传输介质链接起来&#xff0c…...

超声波俱乐部分享:百度世界大会点燃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名&#xff1a;无尽的if-else陷阱 在我刚刚学习编程的时候&#xff0c;我对if-else语句的使用充满了好奇。我曾经写下了这样一个愚蠢的代码块&#xff0c;用来判断一个数字属于哪个范围&#xff1a; if (number > 1 && number < 10) {// 做一些事情 } else …...

高级 Python:函数

伊利亚拉扎列维奇 一、说明 读完标题后&#xff0c;你可能会问自己一些类似的事情&#xff0c;“Python 中的函数是一个高级概念&#xff1f;如何&#xff1f;所有课程都引入了功能作为语言的基本块。你既是对的&#xff0c;也是错的。 大多数关于 Python 的课程都将函数作为基…...

【学习笔记】[PA2019] Osady i warownie 2

这题好抽象&#x1f631; EI 说这题可以转化为对偶图&#xff0c;但是我完全没看懂&#x1f605; 考虑维护最向右和向下的两条路径&#xff0c;那么不能放的位置就是两条路径的交&#xff08;感性理解一下&#xff09; 考虑抽象的描述这条路径&#xff0c; r i r_i ri​表示…...

Flask——接口路由技术

接口路由技术 一、Flask 简介1、环境安装&#xff1a;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;} }//测试类&#xff0c;测试类中使用了mockito、和powermock&#xff0c;用powermock设置成员变量相较于mockito简洁一些&#xff0c;一般mockito和po…...

Axios请求成功和失败时分别执行哪个函数?

在 Axios 中&#xff0c;请求成功和失败时分别执行的函数是 then 和 catch。 特点&#xff1a; then 函数用于处理请求成功的情况&#xff0c;它接受一个回调函数作为参数&#xff0c;在请求成功时会调用该回调函数。catch 函数用于处理请求失败的情况&#xff0c;它也接受一…...

【Linux】进程概念III --fork函数解析

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

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...