开始使用MEVN技术栈开发02 MongoDB介绍

news2024/11/30 15:38:23

开始使用MEVN技术栈开发02 MongoDB介绍

MongoDB介绍

As indicated by the ‘ M ’ in MEVN, we will use MongoDB as the backend database for our app. MongoDB is a NoSQL database. Before we talk about what is a NoSQL database, let ’ s first talk about relational databases so that we can provide a meaningful contrast. If you have not heard of a relational database before, you can think of relational databases like spreadsheets where data is structured and each entry is generally a row in a table. Relational databases are generally controlled with SQL or Structured Query Language. Examples of popular relational databases are MySQL, SQL Server and PostgreSQL.

正如 MEVN 中的 "M "所示,我们将使用 MongoDB 作为应用程序的后台数据库。MongoDB 是一种 NoSQL 数据库。在讨论什么是 NoSQL 数据库之前,我们先来谈谈关系数据库,以便进行有意义的对比。如果您以前没有听说过关系数据库,您可以把关系数据库想象成电子表格,其中的数据是结构化的,每个条目通常是表格中的一行。关系数据库通常使用 SQL 或结构化查询语言进行控制。常用的关系数据库包括 MySQL、SQL Server 和 PostgreSQL。

NoSQL databases in contrast are often called non-relational databases, where NoSQL means anything that isn ’ t an SQL (see how it infers the popularity of SQL?). It might seem like NoSQL is a protest over SQL but it actually refers to a database not structured like a spreadsheet, i.e. less rigid than SQL databases.

相比之下,NoSQL 数据库通常被称为非关系型数据库,NoSQL 意味着任何不是 SQL 的东西(看到它是如何推断 SQL 的流行程度了吗?) 看似 NoSQL 是对 SQL 的抗议,但实际上它指的是结构不像电子表格的数据库,即没有 SQL 数据库那么死板。

The architecture of MongoDB is a NoSQL database which stores information in the form of collections and documents. MongoDB stores one or more collections. A collection represents a single entity in our app, for example in an e-commerce app, we need entities like categories, users, products. Each of these entities will be a single collection in our database.

MongoDB 是一种 NoSQL 数据库,以集合和文档的形式存储信息。MongoDB 存储一个或多个集合。例如,在电子商务应用程序中,我们需要类别、用户和产品等实体。在我们的数据库中,每个实体都是一个单独的集合。

If we were to map similar concepts in relational databases and MongoDB:

如果我们要映射关系数据库和 MongoDB 中的类似概念:

a table in a relational database would compare to a collection in MongoDB.

关系数据库中的表与 MongoDB 中的集合进行比较。

each row in a table (in a relational database) can be thought of as a document in a collection (in MongoDB).

表中的每一行(在关系数据库中)都可以被视为集合中的一个文档(在 MongoDB 中)。

a join operation in SQL can be done with $lookup in MongoDB.

SQL 中的连接操作可以在 MongoDB 中使用 $lookup 来完成。

instead of foreign keys, we utilize reference in MongoDB.

在 MongoDB 中,我们使用引用来代替外键。

In MongoDB, a collection contains documents. A document is an instance of the entity containing the various relevant field values to represent the document. For example, a product document will contain title, description and price fields. Each field is a key-value pair e.g. price: 26, title: “Learning Node” .

在 MongoDB 中,集合包含文档。文档是实体的一个实例,包含表示文档的各种相关字段值。例如,一个产品文档将包含标题、描述和价格字段。每个字段都是一个键值对,例如:price: 26, title: "Learning Node"

Documents look a lot like JSON objects with various properties (though they are technically Binary JSON or BSON). An example of a collectiondocument tree is shown below:

文档看起来很像带有各种属性的 JSON 对象(尽管它们在技术上是二进制 JSON 或 BSON)。下面是一个 collection document 树的示例:

在这里插入图片描述

You can see in the above that we have a variety of relationships. A user has a username and contact. Within contact, you have phone and email. The BSON format provides for a wide variety of support for data types like strings, integers etc.

从上面可以看出,我们有多种关系。用户有用户名和联系人。在联系人中,有电话和电子邮件。BSON 格式支持多种数据类型,如字符串、整数等。

Let ’ s create our database in the next chapter.

让我们在下一章创建数据库。

说明

本文翻译自《Beginning MEVN Stack Development (MongoDB, Express, Vue, Node.js) (Greg Lim, Daniel Correa)》一书,加上了一些自己的理解。特别是代码部分,可能会大量的重写,练习等。

如果想要原版电子书可以留言。

如果涉及到侵权,请联系我删掉。

如果您有想要翻译的英文书籍,请联系我,我可以代为翻译。

如果您想要学习更多的编程知识,可以购买我的视频课,直播课,或者私教课。

如果您有想要开发的软件项目,可以联系我,我可以代为开发。

如果您是学生,有解决不了的编程问题,可以联系我,我可以代为解决。

如果您是程序员,在企业内有解决不了的难题,可以联系我,兴许我可以提供一些建议。

我是张大鹏,”Python私教“的创始人,全栈工程师,著有zdppy和zdpgo两个跨语言的全栈开发框架,如果您对我的框架感兴趣,可以联系我,需要说明的是,这两个框架不是开源的,需要付费购买,但是可以试用,保证能够提高您的开发效率。

其他… 生活不易,如果您有闲钱,麻烦打赏我一点吧,1块不嫌少,20刚刚好,100不嫌多,1000… 就想想吧~

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

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

相关文章

github使用技巧(经验篇)

相关经验 指定代码范围并高亮显示 例如,指定nn_ops.py文件2612-L2686行的代码:https://github.com/tensorflow/tensorflow/blob/v2.14.0/tensorflow/python/ops/nn_ops.py#L2612-L2686 FAQ Q:github网页打不开? 【github加载不…

MySQL例行检查

MySQL例行检查 1.实例例行检查1.1线程1.2索引1.3临时表1.4连接数1.5BINLOG1.6锁1.7WAIT事件1.8MySQL状态 2.事务与锁例行检查2.1查看索引的cardinality2.2查看是否存在事务阻塞现象2.3查看事务执行时长以及执行的所有SQL2.4事务与锁 3.库表例行检查3.1查看缺失主键的表3.2冗余索…

【sql】MyBatis Plus中,sql报错LIKE “%?%“:

文章目录 一、报错详情:二、解决:三、扩展: 一、报错详情: 二、解决: 将LIKE “%”#{xxx}"%"改为LIKE CONCAT(‘%’, #{xxx}, ‘%’) 三、扩展: MyBatis Plus之like模糊查询中包含有特殊字符…

基于SpringBoot的校园二手闲置交易平台

基于SpringBoot的校园二手闲置交易平台的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 摘要 本文基于Spring Boot框架设计并实现了一款…

尝试读取挪威 3d radar数据

1 原因 挪威的三维探地雷达很有特色,步进频率采样,与传统的GPR很不同,一个天线就拥有N个天线的功能。很想看看他们采集的数据是否清晰。 之前浙大学报审稿审到华南理工用的他们这个雷达。 图像来自知乎:若侵权,请告…

【vue】Easy Player实现视频播放:

文章目录 一、效果:二、文档:三、实现:【1】安装插件:【2】引入js文件:【3】使用: 四、方法: 一、效果: 二、文档: GitCode - EasyPlayer.js npm-easydarwin/easyplayer…

【ArcGIS微课1000例】0085:甘肃省白银市平川区4.9级地震震中位置图件制作

据中国地震台网正式测定,12月31日22时27分在甘肃白银市平川区发生4.9级地震,震源深度10公里,震中位于北纬36.74度,东经105.00度。 文章目录 一、白银市行政区划图1. 县级行政区2. 乡镇行政区二、4.9级地震图件制作1. 震中位置2. 影像图3. 震中三维地形一、白银市行政区划图…

OpenWrt 编译入门(小白版)

编译环境 示例编译所用系统为 Ubuntu 22.04,信息如下 编译时由于网络问题,部分软件包可能出现下载问题,还请自备网络工具或尝试重新运行命令 编译步骤 下图为官网指示 编译环境设置(Build system setup) 这里根据我…

2024年,幸运如期而至,愿我们将来不慌不忙,却有岁月的馈赠。

文章目录 一、工作和项目方面1、商城项目2、业务项目13、业务项目24、管理事项 二、家庭,生活,投资和理财方面1、家庭变故2、单一工资收入的结构挑战。3、投资和理财之路 三、技术学习方面读书和阅读AI技术以及工具学习,应用学习和参与知名的…

【数据结构 】初阶二叉树

文章目录 1. 数概念及结构1.1 树的结构1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用(表示文件系统的目录树结构) 2. 二叉树概念及结构2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储结构 3. 二叉树的链式结构的实现3.1 前置说…

【javaSE】代理并不难

代理: 代理模式最主要的就是在不改变原来代码(就是目标对象)的情况下实现功能的增强 在学习AOP之前先了解代理,代理有两种:一种是动态代理,一类是静态代理。 静态代理 相当于是自己写了一个代理类&#…

用UltraISO制作镜像以RAW格式刻录系统到U盘后,在Windows上无法识别的解决办法

用UltraISO制作镜像以RAW格式刻录系统到U盘后,在Windows上无法识别的解决办法: 在https://wtl4it.blog.csdn.net/article/details/135319887https://wtl4it.blog.csdn.net/article/details/135319887 这篇文章中,用UltraISO制作镜像后&…

【网络面试(3)】浏览器委托协议栈完成消息的收发

前面的博客中,提到过很多次,浏览器作为应用程序,本身是不具备向网络中发送网络请求的能力,要委托操作系统的内核协议栈来完成。协议栈再调用网卡驱动,通过网卡将请求消息发送出去,本篇博客就来探讨一下这个…

Excel模板填充:从minio上获取模板使用easyExcel填充

最近工作中有个excel导出的功能,要求导出的模板和客户提供的模板一致,而客户提供的模板有着复杂的表头和独特列表风格,像以往使用poi去画是非常耗时间的,比如需要考虑字体大小,单元格合并,单元格的格式等问…

Windows客户端操作系统的历史版本简介

文章目录 Windows操作系统的历史版本从windows 10开始,版本有些不一样的变化windows 10有哪些版本Windows 10终止服务的版本Windows 10当前服务的版本Windows 10开始的变化Windows 11有哪些版本 Windows 11有哪些用户反馈的缺点推荐阅读 从Windows 1.0到最新的Windo…

bilibili深入理解计算机系统笔记(3):使用C语言实现静态链接器

本文是2022年的项目笔记,2024年1月1日整理文件的时候发现之,还是决定发布出来。 Github链接:https://github.com/shizhengLi/csapp_bilibili 文章目录 可执行链接文件(ELF)ELF headerSection header符号表symtab二进制数如何和symtab结构成员…

DevOps系列之 JNI实现Java调用C的实现案例

JNI(Java Native Interface)允许Java代码与其他语言编写的代码进行交互。以下是一个简单的JNI示例,演示如何使用JNI在Java中调用C/C函数。 最终的目录结构如下: JNI(Java Native Interface)允许Java代码与其…

python中的变量

最近学习了一套课程,体系比较完善,写一下读书笔记,方便后续的复习。 课程涉及的面比较广,包括python的基础、后端框架django、flask;前端开发,html、css、JavaScript、vue、reac;数据库&#x…

yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理

综述 为了解决旋转目标检测问题,研究者们提出了多种方法和算法。以下是一些常见的旋转目标检测方法: 基于滑动窗口的方法:在图像上以不同的尺度和角度滑动窗口,通过分类器判断窗口中是否存在目标。这种方法简单直观,…

NNote插件:让网络阅读变得更高效,轻松同步至Notion笔记

NNote笔记 在这个互联网时代,我们每天都在浏览器中阅读大量的文章和资讯,时常会遇到让人眼前一亮的观点和想法。然而,当我们试图将这些精彩内容记录下来时,却常常感受到复制粘贴的繁琐。为了解决这个问题,NNote插件应运…