在 MongoDB 中创建集合

发布于

当您在MongoDB中创建数据库时,您的数据库基本上是一个空容器,您可以为其添加一个或多个集合。

集合类似于关系数据库中的表。

在关系数据库中,可以使用 在数据库中创建所需的每个表。CREATE TABLE

但是MongoDB不是一个关系数据库,它将其数据存储为文档。每个文档都存储在一个集合中。

本文介绍如何在MongoDB中创建集合。

两种选择

在MongoDB中创建集合有两个选项:

  • 含蓄
  • 明确

下面是每个示例。

创建集合 – 隐式

只需将文档添加到不存在的集合,即可隐式创建集合。执行此操作时,如果集合尚不存在,则会创建该集合。

下面是隐式创建集合的示例:

db.pets.insert({ name: "Fetch" })

这将创建一个名为 的集合,并在其中插入一个文档。pets

实际上,它仅在集合不存在时才创建集合。如果它已存在,则只需将文档插入到该名称的现有集合中。

基本上,语法是这样的:

db.<collection>.insert()

集合的名称在哪里。<collection>

创建集合 – 显式

还可以使用该方法显式创建集合。此方法允许您指定各种选项,例如设置最大大小或文档验证规则。db.createCollection()

这有点类似于SQL中的语句。话虽如此,MongoDB不需要你指定列,数据类型等,就像你在使用关系数据库时需要使用语句指定的那样。[CREATE TABLE](https://database.guide/sql-create-table-for-beginners/ "SQL CREATE TABLE for Beginners")``CREATE TABLE

下面是使用该方法创建集合的示例:db.createCollection()

db.createCollection("employees")

结果:

{ “ok” : 1 }

在此示例中,我没有指定任何选项。因此,像这样创建它并没有真正的好处,就像隐式创建它(如前面的例子一样)。

但是,如果要为集合指定选项,则显式创建集合是可行的方法。

下面是在创建集合时指定一些选项的示例:

db.createCollection(
    "products", 
    { 
        capped : true, 
        size : 7500500, 
        max : 7000 
    } 
)

结果:

{ “ok” : 1 }

以下是我在此示例中提供的选项的说明:

  • 该参数允许您指定是否应限制集合的大小(即不允许增长超过特定大小)。如果指定 ,还必须在字段中设置最大大小。capped``true``size
  • 该参数设置上限集合的最大大小(以字节为单位)。一旦有上限的集合达到其最大大小,MongoDB就会删除旧文档,以便为新文档腾出空间。该字段对于有上限的集合是必需的,对于其他集合则忽略。size``size
  • 该参数允许您指定上限集合中允许的最大文档数。如果一个有上限的集合在达到最大文档数之前达到限制,MongoDB会删除旧文档。因此,请确保参数足以包含使用该参数指定的文档数。max``size``size``max

这是可以使用该方法指定的三个不同选项。db.createCollection()

语法和更多详细信息

完整的语法(截至撰写本文时)如下所示:

db.createCollection( <name>,
   {
     capped: <boolean>,
     autoIndexId: <boolean>,
     size: <number>,
     max: <number>,
     storageEngine: <document>,
     validator: <document>,
     validationLevel: <string>,
     validationAction: <string>,
     indexOptionDefaults: <document>,
     viewOn: <string>,
     pipeline: <pipeline>,
     collation: <document>,
     writeConcern: <document>
   }
)

请参阅官方MongoDB文档,了解每个选项的详细说明。[db.createCollection()](https://docs.mongodb.com/manual/reference/method/db.createCollection/ "https://docs.mongodb.com/manual/reference/method/db.createCollection/")