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

开始使用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.mfbz.cn/a/283625.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[每周一更]-(第48期):一名成熟Go开发需储备的知识点(问题篇)- 1

问题篇 1、Go语言基础知识 什么是Go语言?它有哪些特点?Go语言的数据类型有哪些?Goroutine是什么?它与线程的区别是什么?介绍一下Go语言的垃圾回收机制。 2、并发和并行 什么是并发和并行?它们之间的区别…

Java超高精度无线定位技术--UWB (超宽带)人员定位系统源码

UWB室内定位技术是一种全新的、与传统通信技术有极大差异的通信新技术。它不需要使用传统通信体制中的载波,而是通过发送和接收具有纳秒或纳秒级以下的极窄脉冲来传输数据,从而具有GHz量级的带宽。 UWB(超宽带)高精度定位系统是一…

Java方法(定义和调用,带参数方法定义和调用,带返回值方法的定义和调用,方法的注意事项,方法重载)

文章目录 1. 方法概述1.1 方法的概念 2. 方法的定义和调用2.1 无参数方法定义和调用2.3 无参数方法的练习 3. 带参数方法定义和调用3.1 带参数方法定义和调用3.2 形参和实参3.3 带参数方法练习 4. 带返回值方法的定义和调用4.1 带返回值方法定义和调用4.2 带返回值方法练习14.3…

React学习计划-React16--React基础(八)react-redux使用与优化,纯函数介绍

笔记gitee地址 学习了 redux,为什么还要讲react-redux呢? redux不是专门为react所创建的,只不过在某一刻,react和redux看对眼了,所以俩人走到了一起,所以为了更好的支持redux,react官方出了react-redux来更好的支持redux 1. react…

UntiyShader(七)Debug

目录 前言 一、利用假彩色图像 二、利用Visual Studio 三、帧调试器 前言 Debug(调试),是程序员检查问题的一种方法,对于一个Shader调试更是一种噩梦,这也是Shader难写的原因之一——如果效果不对,我们…

JDBC->SpringJDBC->Mybatis封装JDBC

一、JDBC介绍 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们…

Leetcode每日一题周汇总 (12.24-12.30)

Leetcode每日一题周汇总 (12.24-12.30) 1.Sunday (12.24) 题目链接:1954. 收集足够苹果的最小花园周长 - 力扣(LeetCode) 题目描述: 给你一个用无限二维网格表示的花园,每一个 整数坐标处都有一棵苹果树。整数坐标…

今晚咱们一起来场特别的技术跨年!!

▼最近直播超级多,预约保你有收获 今晚跨年直播:《LLM在电商推荐系统的应用案例实战》 —1— 今晚咱们来场技术跨年! LLM 大模型无疑是2023年最重磅的技术,逐渐在各行各业产生了越来越重要的实质影响,2024年的钟声今晚…

vue3-12

需求是用户如果登录了,可以访问主页,如果没有登录,则不能访问主页,随后跳转到登录界面,让用户登录 实现思路,在用户登录之前做一个检查,如果登录了,则token是存在的,则放…

Android Studio如何查找和替换

目录 前言 一、概述 二、总结 三、更多资源 前言 在Android Studio中,查找和替换是非常常见的操作,它可以帮助我们快速地定位和修改代码中的错误或不合适的内容。本文将介绍如何在Android Studio中进行查找和替换操作,包括基本的查找和替…

蓝牙音频发射模块 蓝牙耳机连接是如何操作的以BT321F为例

一、简介 蓝牙发射模块 蓝牙耳机连接是如何操作的以BT321F模块为例 因为蓝牙音频类的产品,基本上大体分为三类 第一类:蓝牙耳机,包括:tws无线耳机,如airpods,头戴耳机如bose qc35系列等等 第二类&#…

QtitanRibbon 开始使用实例

新建一个界面程序: 修改项目里面的源码: 至此,一个简单界面就出来了,效果如下所示:

STM32CubeMX教程15 ADC - 多重ADC转换

目录 1、准备材料 2、实验目标 3、二重ADC转换 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化调用流程 3.2.2、外设中断调用流程 3.2.3、添加其他必要代码 4、常用函数 5、烧录…

基于 LightGBM 的系统访问风险识别

基于 LightGBM 的系统访问风险识别 文章目录 基于 LightGBM 的系统访问风险识别一、课题来源二、任务描述三、课题背景四、数据获取分析及说明(1)登录https://www.datafountain.cn并获取相关数据(2)数据集文件说明(3&a…

UDS诊断(ISO14229-1) 11服务

文章目录 功能简介应用场景请求和响应1、请求2、子功能3、肯定响应4、否定响应 报文示例UDS中常用 NRC参考 功能简介 11服务,即 ECUReset(ECU重置)服务,用来控制MCU进行重启,重启分为硬件重启和软件重启。 应用场景…

TikTok真题第11天 | 1249.移除无效的括号、23.合并K个升序链表、773.滑动谜题

今天开始整hard题,果然费时。 1249.移除无效的括号 题目链接:1249.minimum-remove-to-make-valid-parentheses 解法: 这个题用栈来处理,用栈来记录左括号的位置,同时用一个向量来记录左括号和右括号是否有效&#x…

【Java系列】Iterator

Iterator(迭代器) Java Iterator(迭代器)迭代器接口定义了几个方法,最常用的是以下三个: Iterator 类位于 java.util 包中,使用前需要引入它,语法格式如下:获取一个迭代器…

第14课 多维数组

文章目录 前言一、多维数组的定义二、多维数组的初始化三、多维数组的使用(以二维数组为例)1. 矩阵转置问题 三、课后练习1. 求一个m*n矩阵中所有元素的累加和2. 查找并输出一个m*n矩阵中的最小元素以及其在矩阵中的位置3. 将m*n矩阵A复制为m*n矩阵B&…

2024年软件测试面试笔记(超详细整理)

大家好,最近有不少小伙伴在后台留言,得准备年后面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到…
最新文章