MongoDB,成长路线

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

  1. 条件操作符

| 操作 | 格式 | 范例 |

| :-: | :-: | :-: |

| 等于 | { key:value} | db.col.find({“by”:“内容”}) |

| 小于 | { key:{KaTeX parse error: Expected 'EOF', got '}' at position 9: lt:value}̲} | db.col.find…lt:50}}).pretty() |

| 小于或等于 | { key:{KaTeX parse error: Expected 'EOF', got '}' at position 10: lte:value}̲} | db.col.find…lte:50}}).pretty() |

| 大于 | { key:{KaTeX parse error: Expected 'EOF', got '}' at position 9: gt:value}̲} | db.col.find…gt:50}}).pretty() |

| 大于或等于 | { key:{KaTeX parse error: Expected 'EOF', got '}' at position 10: gte:value}̲} | db.col.find…gte:50}}).pretty() |

| 不等于 | { key:{KaTeX parse error: Expected 'EOF', got '}' at position 9: ne:value}̲} | db.col.find…ne:50}}).pretty() |

模糊查询

  • 查询 title 包含"教"字的文档: db.col.find({title:/教/})
  • 查询 title 字段以"教"字开头的文档:db.col.find({title:/^教/})
  • 查询 titl e字段以"教"字结尾的文档:db.col.find({title:/教$/})
  1. 读取指定数量的数据记录 — Limit

db.COLLECTION_NAME.find().limit(num)

  1. 跳过指定数量的数据 — skip

db.COLLECTION_NAME.find().limit(num).skip(num)

  1. 排序

使用 sort() 方法对数据进行排序

db.COLLECTION_NAME.find().sort({KEY:1}) — 1为升序,-1为降序

MongoDB可视化工具 (Robo3T) 或 adminMongo


MongoDB可视化工具 MongoDBCompass

一、官网地址

解压文件夹找到文件打开

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一直 next 到最后

在这里插入图片描述

在这里插入图片描述

一直点 即可。

Studio 3T的使用

一、官网地址

在这里插入图片描述

二、下载和安装

点击DOWNLOAD即可下载

在这里插入图片描述

按照自己电脑系统进行选择,然后填写邮箱和选择行业,第一次登录如果不提交不会下载,下载完成是一个zip压缩包(我的电脑是windows系统),解压缩安装即可,安装途中可以自行选择安装路径

安装完成选择连接:

在这里插入图片描述

根据提示进行操作,最后点击保存即可:

在这里插入图片描述

右键新建的连接,选择Add Database新建数据库:

在这里插入图片描述

输入数据库名称点击OK:

在这里插入图片描述

右键创建的database,选择Add Collection创建新的Collection(相当于新建关系型数据库中的表),也可以删除数据库Drop Database:

在这里插入图片描述

三、CRUD操作

首先打开命令行窗口,Open intelliShell:

在这里插入图片描述

红色框是输入的命令行,绿色框是输出的提示信息:

在这里插入图片描述

1、Insert操作详解

插入一个文档,db.collection.insertOne():

在这里插入图片描述

插入多个文档,db.collection.insertMany():

在这里插入图片描述

2、Query操作详解

查询所有, db.collection.find(),相当于:SELECT * FROM table_name

数据源

db.inventory.insertMany([

{ item: “journal”, qty: 25, size: { h: 14, w: 21, uom: “cm” }, status: “A” },

{ item: “notebook”, qty: 50, size: { h: 8.5, w: 11, uom: “in” }, status: “A” },

{ item: “paper”, qty: 100, size: { h: 8.5, w: 11, uom: “in” }, status: “D” },

{ item: “planner”, qty: 75, size: { h: 22.85, w: 30, uom: “cm” }, status: “D” },

{ item: “postcard”, qty: 45, size: { h: 10, w: 15.25, uom: “cm” }, status: “A” }

]);

在这里插入图片描述

按条件查询db.collection.find({ke:value}),相当于SELECT * FROM table_name WHERE name = ?

在这里插入图片描述

使用查询运算符指定条件

在这里插入图片描述

指定AND条件查询,相当于SELECT * FROM inventory WHERE status = “A” AND qty < 30

在这里插入图片描述

指定OR条件,相当于SELECT * FROM inventory WHERE status = “A” OR qty < 30

在这里插入图片描述

指定AND和OR条件,相当于SELECT * FROM inventory WHERE status = “A” AND ( qty < 30 OR item LIKE “p%” )

在这里插入图片描述

3、Update操作详解

数据源

db.inventory.insertMany( [

{ item: “canvas”, qty: 100, size: { h: 28, w: 35.5, uom: “cm” }, status: “A” },

{ item: “journal”, qty: 25, size: { h: 14, w: 21, uom: “cm” }, status: “A” },

{ item: “mat”, qty: 85, size: { h: 27.9, w: 35.5, uom: “cm” }, status: “A” },

{ item: “mousepad”, qty: 25, size: { h: 19, w: 22.85, uom: “cm” }, status: “P” },

{ item: “notebook”, qty: 50, size: { h: 8.5, w: 11, uom: “in” }, status: “P” },

{ item: “paper”, qty: 100, size: { h: 8.5, w: 11, uom: “in” }, status: “D” },

{ item: “planner”, qty: 75, size: { h: 22.85, w: 30, uom: “cm” }, status: “D” },

{ item: “postcard”, qty: 45, size: { h: 10, w: 15.25, uom: “cm” }, status: “A” },

{ item: “sketchbook”, qty: 80, size: { h: 14, w: 21, uom: “cm” }, status: “A” },

{ item: “sketch pad”, qty: 95, size: { h: 22.85, w: 30.5, uom: “cm” }, status: “A” }

] );

更新单个文档db.collection.updateOne()

在这里插入图片描述

更新多个文档db.collection.updateMany()

在这里插入图片描述

替换文档db.collection.replaceOne()。

在这里插入图片描述

4、Delete操作详解

数据源

db.inventory.insertMany( [

{ item: “journal”, qty: 25, size: { h: 14, w: 21, uom: “cm” }, status: “A” },

{ item: “notebook”, qty: 50, size: { h: 8.5, w: 11, uom: “in” }, status: “P” },

{ item: “paper”, qty: 100, size: { h: 8.5, w: 11, uom: “in” }, status: “D” },

{ item: “planner”, qty: 75, size: { h: 22.85, w: 30, uom: “cm” }, status: “D” },

{ item: “postcard”, qty: 45, size: { h: 10, w: 15.25, uom: “cm” }, status: “A” },

] );

删除所有文档db.collection.deleteMany()

在这里插入图片描述

删除与条件匹配的文档

在这里插入图片描述

删除与条件匹配的一个文档

在这里插入图片描述

以上基本操作及其他扩展的法见:官网

在Express中利用Mongoose操作MongoDB

==========================================================================================

Mongoose 是一个让我们可以通过Node来操作MongoDB数据库的一个模块
  • Schema(模式对象)

——Schema 对象定义约束了数据库中的文档结构

  • Model

——Model 对象作为集合中的所有文档的表示,相当于MongoDB中的collection,它的每一个实例就是一个document文档

  • Document

——Document表示集合中的具体文档,相当于collection中的一个具体文档

关系:Schema生成Model,Model创造Document

  1. Mongoose的使用方式
  • 下载安装Mongoose(npm i mongoose --save)
  • 项目中引入mongoose(const mongoose = require(‘mongoose’))
  • 连接MongoDB数据库(mongoose.connect(‘mongodb://数据库ip地址 : 端口号( 默认端口27017可以省略 )/数据库名’))
  • 数据库连接成功事件(mongoose.connection.once(‘open’ , () => {}))
  • 数据库断开事件(mongoose.connection.once(‘close’ , () => {}))
  • 创建Schema对象(约束数据)
  1. const Schema = mongoose.Schema
 var stuSchema = new Schema({
     name: String,
     gender: {
         type: String,
        default: 'male'
     }
 }, {
timestamps: true (自动添加createdAt和updatedAt)

})

  • 将stuSchema映射到一个MongoDB collection并定义这个文档的构成(var stuModle = mongoose.model(‘User’, stuSchema, ‘user’)) 这里注意点三个参数,如果不加会自动把collection定义成复数形式
  1. 增删改查操作
  • 查找数据 (stuModle.find({条件}), fn)
  • 增加数据 ( new UserModel({}).save())
  • 删除数据 (UserModel.deleteOne({条件}, fn)) remove
  • 修改数据 (UserModel.updateOne({条件}, fn))

模式(Schemas)

=========================================================================

紧跟潮流

大前端和全栈是以后前端的一个趋势,懂后端的前端,懂各端的前端更加具有竞争力,以后可以往这个方向靠拢。

这边整理了一个对标“阿里 50W”年薪企业高级前端工程师成长路线,由于图片太大仅展示一小部分

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

紧跟潮流

大前端和全栈是以后前端的一个趋势,懂后端的前端,懂各端的前端更加具有竞争力,以后可以往这个方向靠拢。

这边整理了一个对标“阿里 50W”年薪企业高级前端工程师成长路线,由于图片太大仅展示一小部分

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-mrKmQSI7-1713325915025)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值