MongoDB 集合(第 4 天)

作者 : 慕源网 本文共2585个字,预计阅读时间需要7分钟 发布时间: 2021-10-29 共184人阅读

在阅读本文之前,我强烈建议您阅读本系列的前几部分:

MongoDB 以文档格式存储数据。集合用于存储文档,就像关系数据库管理系统 (RDBMS) 的数据表一样。集合存在于数据库中并支持动态模式。集合中的文档可以有不同的字段。

MongoDB 集合(第 4 天)

如上图所示,我们有一个名为 Test 的集合。在这个集合中,我们有 3 个文档,但是这三个文档的架构并不相同。集合可能存储存在于同一结构之外的文档。这是可能的,因为 MongoDB 是一个无模式的数据库。在关系数据库中,我们必须在插入任何数据之前定义表的模式。但是,在 MongoDB 中定义集合的模式并不需要这样做。

有效集合名称

在为集合定义名称之前,我们应该考虑以下几点:

  • 集合名称必须以字母或下划线开头。集合名称不能以数字或特殊字符开头。
  • 不能在集合名称中使用“$”符号,因为“$”已被保留。
  • 集合的名称不能超过 128 个字符。

让我们看一些例子。

Collection Name Valid
Demo Yes
#Demo No
Demo_Test Yes
12Demo No
Demo12 Yes

createCollection() 方法

MongoDB createCollection() 方法用于创建新集合。

语法:createCollection(Collection_Name,Option)

参数

Name Type Description
Collection_Name String 集合名称
Option Document 提供关于集合大小和自动索引的选项

Collection_Name 参数是必不可少的,但 Option 参数不是必不可少的。它是一个可选参数。

创建没有选项参数

的集合 我们可以创建一个只包含 Collection_Name 参数的集合。

首先,我们显示所有可用集合的名称。

MongoDB 集合(第 4 天)

现在我们使用 createCollection() 方法创建一个“Employee”集合。

MongoDB 集合(第 4 天)

我们可以看到现在已经创建了 Employee 集合并且现在出现在前面的列表中。

注意:在 MongoDB 中,不需要 createCollection() 方法来创建新集合。当我们向集合中插入数据时,MongoDB 会自动创建一个新集合。让我们看一个例子。

MongoDB 集合(第 4 天)

现在我们将一些数据插入到尚未创建的“Building”集合中。

MongoDB 集合(第 4 天)

我们可以看到已经创建了“Building”表。所以我们可以在不使用 createCollection() 方法的情况下创建一个集合。不幸的是,这种方法有一些缺点,例如,我们不能在集合创建中使用option 参数。

创建带有option 参数的集合

当我们创建带有option 参数的集合时,它被称为上限集合。Capped Collections是可以按照插入顺序存储数据的集合。Capped Collections 大小固定,包含固定数量的文档并使用“auto-FIFO age-Out”术语。换句话说,当分配的空间被充分利用时,新对象(文档)将按照插入顺序替换旧对象。Capped Collections 的工作方式类似于循环缓冲区。一旦一个集合填满了它分配的空间,它就会通过覆盖集合中最旧的文档来为新文档腾出空间。Capped Collections 支持根据插入顺序插入和检索文档的高吞吐量操作。

封顶集合的好处:

  • MongoDB 自动按插入顺序保留集合中的对象。这对于记录应保留顺序的问题的记录类型非常有用。当我们想要按插入顺序检索项目时,这非常有用。
  • 当基于最近最少插入的集合已满时,数据会自动老化。
  • 禁止增加文档大小的更新,以确保文档不会更改其在磁盘上的位置。

以下是上限集合的限制:

  • 我们无法从 Capped Collection 中删除特定文档。要从集合中删除所有文档,请使用 drop() 方法删除集合。MongoDB 集合(第 4 天)
  • 我们无法对 Capped Collection 进行分片。
  • 如果我们对集合执行更新操作,并且由于更新操作,集合大小从其原始大小增加,那么更新操作将失败。
  • 如果我们更新了一个集合,并且该集合的大小从其原始大小减小,然后从主节点重新同步辅助节点,则该辅助节点将进行复制,并且分配的空间基于当前较小的文档大小。如果将来主节点收到将文档增加回其原始大小的更新,则主节点将接受更新,但辅助节点将失败。

以下是 Capped Collection 中的选项列表:

字段名称 数据类型 描述
Capped Boolean 如果 Capped 字段的值为 true,则表示该集合是一个有上限的类型。默认值为 false
autoIndexID Boolean 如果值为 true,则会自动创建 _id 字段上的索引。默认值为假。
Size Number 集合的最大大小以字节为单位指定。如果我们将 Capped 字段设置为 true,那么我们还需要指定此字段。
Max Number 集合中允许的最大文档数

让我们看一些示例:

示例 1

MongoDB 集合(第 4 天)

在此示例中,我们创建了一个简单的 Capped Collection,其大小为 654321 字节,最多包含 100 个文档。

示例 2

MongoDB 集合(第 4 天)

在上图中,我们创建了一个 Capped Collection,并将 max 字段的值设置为 3 并插入了 3 条记录。现在,我们将插入一条新记录并检查集合的内容。

MongoDB 集合(第 4 天)

我们可以看到“pankaj”的记录已经被“Sanjeev”的记录替换了。这是我们上面讨论的 Capped Collection 的属性。

Show collections方法:此方法用于显示当前数据库中存在的所有集合的名称。

语法:show collections.

例子

首先,我们看到当前数据库的所有集合的名称。

MongoDB 集合(第 4 天)

现在我们创建 一个Demo3集合并再次执行show collections命令。

MongoDB 集合(第 4 天)

现在 Demo3 集合出现在前面的列表中。

drop()方法: drop()方法删除一个特定的集合,如果选中的集合删除成功则返回true,否则返回false。

语法: db.Collection_Name.drop()

示例

首先,我们查看当前数据库的所有集合的名称。

MongoDB 集合(第 4 天)

现在,我们使用 drop() 方法删除 Employee 和整个 Employee1 集合。

MongoDB 集合(第 4 天)

我们可以看到,现在列表中不存在 Employee 和 Employee1 集合。

以上都是创建和删除集合的一些基本命令。下一篇文章解释了一个新主题。

感谢您阅读这篇文章!


慕源网 » MongoDB 集合(第 4 天)

常见问题FAQ

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

发表评论

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