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

发布时间:2024年01月01日

开始使用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… 就想想吧~

文章来源:https://blog.csdn.net/qq_37703224/article/details/135323620
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。