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('连接关闭');
}); //设置连接关闭的回调

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

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

相关文章

el-cascader级联选择器选中一个全选中问题

问题 只选中一个却把同级全选中 解决 :props中添加label、value、children属性 label、value、children属性值需要和后端返回的集合中的字段名保持一致 后端返回数据:

3000 台 Apache ActiveMQ 服务器易受 RCE 攻击

超过三千个暴露在互联网上的 Apache ActiveMQ 服务器容易受到最近披露的关键远程代码执行 (RCE) 漏洞的影响。 Apache ActiveMQ 是一个可扩展的开源消息代理,可促进客户端和服务器之间的通信,支持 Java 和各种跨语言客户端以及许多协议,包括…

网络安全(网络安全)小白自学

想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全…

【Midjourney入门教程2】Midjourney的基础操作和设置

文章目录 Midjourney的常用命令和基础设置1、 /imagine2、 /blend3、 /info4、 /subscribe5、 /settings(Midjourney的基础设置)6、 /shorten 有部分同学说我不想要英文界面的,不要慌: 点击左下角个人信息的设置按钮,找…

网际控制报文协议ICMP

网际控制报文协议ICMP 一.网际控制报文协议ICMP概述 为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCPIP体系结构的网际层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)[RFC 792].主机或路由器使用ICMP来发送差错报告报…

图解系列--路由器和它庞大的功能

03.01 何为路由器 路由器是指主要负责 OSI参考模型中网络层的处理工作,并根据路由表信息在不同的网络 之间转发IP 分组的网络硬件(图3-1)。这里的网络一般是指IP 子网,也可以称为广播域。此外,现在的路由器还会搭载其他各种各样的功能。 0…

【ES专题】ElasticSearch搜索进阶

目录 前言阅读导航前置知识特别提醒笔记正文一、分词器详解1.1 基本概念1.2 分词发生的时期1.3 分词器的组成1.3.1 切词器&#xff1a;Tokenizer1.3.2 词项过滤器&#xff1a;Token Filter1.3.3 字符过滤器&#xff1a;Character Filter 1.4 倒排索引的数据结构 <font color…

IDEA中如何移除未使用的import

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是全栈工…

Oracle(10)Managing Undo Data

目录 一、基础知识 1、AUM :Init Parameters AUM:初始化参数 2、AUM:Other Parameters AUM:其他参数 3、AUM:Sizing an UNDO TS AUM:调整UNDOTS的大小 4、AUM :Undo Quota AUM:撤消配额 5、Get Undo Segment Info 获取撤消段信息 二、基础操作 1、AUM:UNDO Tablespace …

MySQL:至少参与xxx参与的全部事件(二)

MySQL&#xff1a;至少参与xxx参与的全部事件&#xff08;二&#xff09; – WhiteNights Site 标签&#xff1a;MySQL 本来不难的&#xff0c;结果实验课上又没能当场做出来。还是回到宿舍复盘才看到问题所在&#xff0c;令人感慨。 头歌例题 仔细审题 任务描述 创建一个名…

SpringBoot框架使用AOP + 自定义注解实现请求日志记录

一、SpringBoot记录日志 文章目录 一、SpringBoot记录日志1.1、环境搭建1.2、配置FastJson1.3、自定义LogRecord注解1.4、定义日志实体类1.5、创建HttpRequestUtil工具类1.6、定义AOP切面1.7、编写测试类1.8、运行测试 1.1、环境搭建 搭建SpringBoot工程。引入【spring-boot-st…

2023年软件系统架构师论文【回忆版】

2023年11月5日&#xff0c;全国计算机等级下半年考试&#xff0c;北京市软件架构师考试其中有个考点在首都经济贸易大学丰台校区&#xff09;&#xff0c;地址&#xff1a;北京市丰台区花乡张家路口121号&#xff08;北门入校&#xff09; 注意&#xff1a;机考的考试时间有所变…

BIOS开发笔记 - HDA Audio

在PC中,音频输出是一个重要的功能之一,目前大多数采用的是英特尔高清晰音效(英语:Intel High Definition Audio,简称为HD Audio或IHD)方案,它是由Intel于2004年所提出的音效技术,能够展现高清晰度的音质效果,且能进行多声道的播放,在音质(音效质量)上超越过去的其他…

FFmpeg 硬件加速视频转码指南

基于 Windows 下演示&#xff0c;Linux 下也可以适用。 所使用 ffmpeg 版本为 BtbN 编译的 win64-gpl 版&#xff08;非 gpl-share&#xff09;&#xff0c;项目地址&#xff1a;BtbN / FFmpeg-Builds 也可以使用 gyan.dev 编译的 git-full 版&#xff0c;地址&#xff1a;gyan…

【自动控制原理】时域分析法:一阶、二阶、高阶系统的时间响应及动态性能

文章目录 第3章 时域分析法3.1 基本概念3.1.1 典型输入信号3.1.2 系统动态性能指标 3.2 一阶系统的时间响应及动态性能一阶系统的标准形式&#xff08;尾1标准型&#xff09;3.2.1一阶惯性环节的单位阶跃响应3.2.2一阶惯性环节的单位速度响应3.2.3一阶惯性环节的单位脉冲响应3.…

【gpt redis】原理篇

用的黑马程序员redis课程的目录&#xff0c;但是不想听讲了。后续都是用gpt文档获取的。 1.课程介绍(Av766995956,P145) 2.Redis数据结构-动态字符串(Av766995956,P146) sds 1M是个界限 其实他是个由c语言实现的结构体 有这么几个参数 len alloc flag char[] len是实际长度 …

idea插件(一)-- SequenceDiagram(UML自动生成工具)

目录 1. 安装 2. 默认快捷键 3. 操作说明 4. 导出为图片与UML类图 4.1 导出为图片&#xff1a; 4.2 导出 UML 类图 SequenceDiagram是从java、kotlin、scala&#xff08;Beta&#xff09;和groovy&#xff08;limited&#xff09;代码生成简单序列图&#xff08;UML&…

WorkManger学习汇总

一.使用 WorkManger主要是用来执行一定会执行的任务的&#xff0c;如即使app被杀掉、手机重启都会执行。 适用场景&#xff1a;定期重复性任务&#xff0c;如定期log上传等 使用的话首先引入库&#xff08;我使用的是2.7.1&#xff09; implementation "androidx.work:…

C语言--判断一个年份是否是闰年(详解)

一.闰年的定义 闰年是指在公历&#xff08;格里高利历&#xff09;中&#xff0c;年份可以被4整除但不能被100整除的年份&#xff0c;或者可以被400整除的年份。简单来说&#xff0c;闰年是一个比平年多出一天的年份&#xff0c;即2月有29天。闰年的目的是校准公历与地球公转周…