在 MongoDB 中插入、更新和删除文档 – 第二部分

作者 : 慕源网 本文共4042个字,预计阅读时间需要11分钟 发布时间: 2022-01-4 共248人阅读

介绍

欢迎回到 MongoDB 文章系列 – 第 2 部分。在上一篇文章中,我们讨论了 MongoDB 的概念,包括如何安装 MongoDB。现在,在本文中,我们将讨论 MongoDB 数据库的基本结构,包括其不同的数据类型,还将讨论如何在 MongoDB 数据库中插入、更新和删除数据。此外,在本文中,我们将讨论如何创建可扩展、灵活且快速的全功能数据存储。如果您想阅读这些系列的前几篇文章,请点击链接。

了解 MongoDB

根据介绍文章中的讨论,我们已经看到 MongoDB 中的数据具有灵活的模式。在 MongoDB 中,我们不需要像传统的 RDBMS 概念那样在将数据插入该数据库之前声明集合的新列。因此,在 MongoDB 中设计模式时,我们需要记住一些基本的考虑因素。

  1. 我们需要根据我们的要求设计我们的模式。
  2. 如果我们一起使用两个对象,那么我们需要将这两个对象组合为一个对象。
  3. 我们可以在写入数据时执行连接。
  4. 我们需要针对最频繁的数据搜索优化我们的架构
  5. 我们可以执行最复杂的数据聚合功能

什么是文档?文档是 MongoDB 中数据的基本单位,在 RDBMS 系统的概念中,它基本上相当于行。实际上,文档是 MongoDB 的主要心脏。文档是一组有序的键及其关联的数据或值。这些文档的表示在每种编程语言中总是变化的,但这些类型的文档的基本结构通常是映射、散列或字典。在 JavaScript 的情况下,文档代表一个对象,如下所示。

{“message” : “Hello, MongoDB”}  

上面的文档示例包含一个名为“message”的键,值为“Hello, MongoDB”。大多数文档总是包含一个更好的完整结构,其中包含多个嵌套的键值对。通常,文档中的键主要是字符串类型的数据。但是,与此相反,密钥始终保持一些显着的例外。

  • 键不包含任何空字符。如果在键中使用任何空字符,则表示它将表示键的结尾。
  • 有一些特殊字符(如 $ 或 . 等)主要用于某些特殊情况。这些字符基本上是保留字符。
MongoDB实际上是一个类型敏感和大小写敏感的数据库。所以,出于这个原因,下面的两个文件是不一样的,
{“text”:”Hello”}  
{“Text”:”Hello”}  
关于该文档的最重要的一点是它不允许在单个文档中有任何重复的键。例如,下面的文档在 MongoDB 的情况下实际上是一个无效的文档。
{“message” : “Hello, MongoDB”, “message” : “MongoDB is NoSQL DB”}  

什么是Collection?在 MongoDB 中,根据 RDBMS 的概念,可以将集合视为表。基本上,集合是一组文档。MongoDB 中的每个集合始终具有动态模式。这意味着单个集合中的文档可以具有任意数量的不同元素或形状。例如,下面的两个文档可以存储在 MongoDB 中的单个文档中。

{“message” : “Hello, MongoDB”} {“text”:”Hello”, “count”:10}  

根据上面的示例,两个文档都不包含任何公共密钥。此外,这两个文档还包含针对键值的不同类型的值。因此,很自然地,我们脑海中总会出现一个问题——这是否意味着我们可以将任何类型的数据存储在具有不同类型文档结构的公共集合中。另外,我们根本不需要单独的集合吗?因此,根据以下几点,我们需要将不同的结构化文档分离并存储在不同的集合中。

  • 为不同类型的文档维护相同的集合
  • 必须更快地获取集合列表,而不是提取集合中的类型列表。
  • 如果我们为不同类型的文档维护单独的集合,那么基于相同类型的元素对文档进行分组会更容易使用。
  • 另外,由于MongoDB支持索引,所以最好为不同类型的文档维护单独的集合,以便我们可以根据文档结构应用索引。
  • 在 MongoDB 中,每个集合都以其名称而闻名。集合名称可以是任何字符串值或 UTF-8 字符串。但是,它仍然包含一些限制:
    1. 空字符串 (“”) 不是有效的集合名称。
    2. 集合名称不能包含空字符。
    3. 此外,我们不能创建任何以 system 关键字开头的集合名称。
    4. 用户创建的集合名称在名称中不包含任何特殊字符,如 ($)。

MongoDB 的数据类型MongoDB 实际上支持多种数据类型作为文档中的值。实际上,MongoDB 文档一直被认为是类似于 JSON 的数据,它是一个 JavaScript 对象。JSON 基本上是数据的简单表示。JSON 的优点是有助于理解、解析和记忆。JSON 只能接受 null、Boolean、numeric、string、array 和 object 类型的数据。下面的列表是 MongoDB 中可用的数据类型。

数据类型 说明
String 它是最常用的数据类型。字符串必须是 UTF-8 在 MongoDB 中有效
Integer 它用于存储数值。它可以是 32 位或 64 位。
Boolean 它用于存储布尔数据类型。它的价值要么是真要么是假。
Double 它用于存储浮点值。
Arrays 这些数据类型用于在单个键中存储多个值的列表
Objects 此数据类型用于存储嵌入的数据
Null 用于存储空数据
Date 此数据类型用于以 UNIX 时间格式存储当前日期或时间值。
MongoDB Shell

要与 MongoDB 交互,我们可以使用 MongoDB Shell,它是 MongoDB 的交互式 JavaScript 界面。我们可以使用 Mongo shell 从 MongoDB 集合中查询和插入或更新或删除任何文档。要启动 MongoDB shell,我们需要打开命令提示符,然后转到 MongoDB 安装时的根目录。假设,我已经将 MongoDB 安装在驱动器 D 中,文件夹名称为 MongoDB 4.0。因此,命令提示符位置如下图所示。在 MongoDB 中插入、更新和删除文档 - 第二部分现在,要启动 MongoDB,请从该位置键入以下命令。

在 MongoDB 中插入、更新和删除文档 - 第二部分
创建和删除数据库

在 MongoDB 中,第一个基本步骤是创建数据库。数据库用于存储所有集合。在 MongoDB 中,没有可用于创建数据库的命令。实际上,我们不需要创建数据库,当我们想要保存集合中的任何数据时,MongoDB 会自动创建一个数据库。实际上,我们不需要提及我们要创建的内容,它会自动执行该任务。我们可以使用以下命令来检查该数据库是否存在。如果没有数据库存在,那么它会创建一个数据库。如果数据库存在,那么它将返回现有的数据库。

> use sampledb如果我们想检查当前选择的数据库,请使用以下命令,

> db如果我们想检查数据库列表,那么我们可以使用以下命令,

> show dbs

在 MongoDB 中插入、更新和删除文档 - 第二部分

如果我们想删除一个数据库,那么我们需要使用如下的 drop database 命令,

> db.dropDatabase()创建和删除集合创建 MongoDB 数据库后,是时候在现有的 MongoDB 数据库中创建一个集合了。因此,要在数据库中创建新集合,我们需要使用 db.createCollection(name, option) 命令。这个方法有两个参数。

  1. name 参数基本上采用代表集合名称的字符串值
  2. option 参数采用一个文档对象,该对象指定包括索引选项在内的内存大小。该参数是可选的。这个参数有四种类型的选项,
Field 类型 描述
capped 布尔值 如果该值为真,则该集合将作为一个有上限的集合。上限集合基本上是一个固定大小的集合,当大小超过时,它会自动用新值替换旧值。默认值为假。
autoIndexId 布尔值 如果为真,则自动在 _id 的字段上创建索引。默认值为假。
size Number 当上限字段值为真时需要。我们需要提供数字值以提及上限集合的最大字节数。
max Number 当上限字段值为真时需要。它提到了上限集合中的最大文档数。

因此,创建集合的最简单命令如下所示,

在 MongoDB 中插入、更新和删除文档 - 第二部分此外,我们可以使用这两个参数创建集合,这意味着名称和选项如下 –在 MongoDB 中插入、更新和删除文档 - 第二部分所以,如果我们需要删除集合,那么我们需要使用 drop() 命令,如下所示。

> db.Employee.drop()

插入单个文档

现在,在本文的前一节中,我们创建了一个数据库和集合。现在,是时候将记录插入到集合中了。因此,Insert 是在集合中插入任何文档的基本命令。此命令在集合中插入单个文档。如果文档对象中未提及,此命令还会在文档中添加“_id”命令。在 MongoDB 中插入、更新和删除文档 - 第二部分此外,Insert() 命令可以一次插入多条记录。使用insert命令插入批量数据,语法如下,

在 MongoDB 中插入、更新和删除文档 - 第二部分现在,成功插入数据后,我们需要获取数据以查看它是否真的插入到集合中。为此,用户需要使用 find() 命令。在 MongoDB 中插入、更新和删除文档 - 第二部分此命令还显示 MongoDB 自动将“_id”列插入到集合中。

删除文档现在,我们已将数据插入到集合中。现在,如果我们想删除这些数据,那么我们需要使用以下命令,

db.Employee.remove()

此命令将删除员工集合中的所有文档。此命令不会删除集合。它只删除集合的所有文档并使集合为空。这个 remove() 接受一个名为 query document 的可选参数,该参数通常用于指定删除文档的任何特定标准。如果给定了查询值,则只会删除与查询表达式匹配的文档。

db.Employee.remove(“Department”:”Accounts”)

因此,上述命令仅删除部门为 Accounts 的员工详细信息。我们需要记住的另一件事是,一旦我们删除任何文档,它就会被永久删除。无法撤消删除或恢复已删除的文档。

文件更新

因此,在将文档插入数据库后,可以使用 Update() 方法更改这些文档。Update() 方法采用两个参数 – 一个查询文档,它指定系统识别哪个文档需要更新的标准或条件,第二个是更新的文档,需要用现有文档替换。此更新操作是一个自动过程。这意味着如果同时在服务器中触发两个同步更新,那么首先到达服务器的将首先应用,然后再应用下一个。

在 MongoDB 中插入、更新和删除文档 - 第二部分

结论

因此,在本文中,我们讨论了以下主题,

  • 如何在 MongoDB 中创建数据库
  • 如何在 MongoDB 中创建集合
  • 如何插入文档(单个文档和多个文档)
  • 如何删除文档
  • 如何删除集合
  • 如何根据任何条件更新现有数据
  • 如何删除数据库

我希望这篇文章能帮到你。欢迎任何与本文相关的反馈或查询。如果有人对本文有疑问,请询问我。

下一篇>>查询MongoDB中存储的数据第3部分


慕源网 » 在 MongoDB 中插入、更新和删除文档 – 第二部分

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录