跳至主要内容

如何在 MongoDB 中创建数据库:快速指南

了解如何通过 Shell 或脚本创建 MongoDB 数据库,并避开常见陷阱。
· 3分钟 阅读

使用 AI 探索

您已经确定 MongoDB 是您应用的最佳数据库选择,但还不太清楚如何让数据库启动并运行。您来对地方了,更好的消息是,这不到一分钟就能完成。

这里假设您已经部署了一个 MongoDB Atlas、MongoDB Community Edition 或 MongoDB Enterprise Edition 集群。

为便于演示,我们将使用 MongoDB Shell,不过迁移到其他工具和编程语言时几乎没有区别。您也可以查看这段简短的视频讲解,了解如何在 MongoDB 实例中创建数据库。  

连接到集群后,您可以执行如下操作:

use("dbinc");

在上述示例中,"dbinc" 是我们要使用的数据库。不过,use 函数只会更改上下文,并不会真正创建数据库。

与其他数据库工具不同,MongoDB 只有在存储数据时才会创建数据库。这可能发生在您创建集合或创建第一条文档时。

例如,请看下面的操作:

use("dbinc");

db.createCollection("employees");

上述命令会创建一个名为 "dbinc" 的数据库以及一个名为 "employees" 的集合。但需要说明的是,在创建文档之前,您并不需要显式创建集合。

您可以通过执行以下命令来验证数据库是否已创建:

show dbs

再举一个稍有不同的例子:

use("dbinc");

db.employees.insertMany([
    { "name": "Nic Raboy", "title": "Master of Shenanigans", "salary": 50000, "last_raise_date": new Date("2013-06-01") },
    { "name": "Megan Grant", "title": "Word Wrangler", "salary": 125000, "last_raise_date": new Date("2020-12-01") },
    { "name": "Tony Kim", "title": "Alliance Czar", "salary": 80000, "last_raise_date": new Date("2025-02-01") },
]);

在上面的示例中,"dbinc" 是我们的数据库,"employees" 是我们的集合,但如果两者都不存在,那么在插入数据时都会被创建。如果其中任一已存在,也没问题。我们只是向其中添加新文档。

虽然不在本文的范围内,但值得注意的是,如果没有指定,MongoDB 会为您创建一个 _id 值。无需担心主键定义。

在使用 MongoDB 数据库时,您需要留意以下一些常见陷阱。

  • 不要认为 use(“db_name”) 会创建数据库,因为它不会。请记住,您必须先创建集合或添加数据。
  • 如果您的数据库名或集合名有拼写错误,您不会收到警告。相反,可能会像前面的示例一样,创建一个新数据库或集合。
  • 请注意数据库名和集合名的大小写敏感性。

只要避免以上常见陷阱,在 MongoDB 中创建和使用数据库就会非常轻松。

结论

在 MongoDB 中创建数据库并不困难,也无需在处理数据之前就为此担心,因为 MongoDB 中的数据库只有在创建集合——或者大多数情况下,创建文档——时才会被创建。

需要更全面、包含更多工具的示例吗?请在 MongoDB 博客中查看如何创建 MongoDB 数据库的所有细节。

如果您从事数据科学或类似岗位,不妨看看这门课程:Introduction to MongoDB in Python。

常见问题

不使用 shell 也能创建 MongoDB 数据库吗?

可以。您可以使用 MongoDB Compass 等工具,通过 Python 或 JavaScript 等语言以编程方式,或通过 Mongoose 等 API 来创建 MongoDB 数据库。

MongoDB 实际上何时会创建数据库?

MongoDB 只有在插入数据时才会创建数据库——可以是创建集合或插入文档。

在插入文档之前是否必须显式创建集合?

不需要。插入第一条文档时,MongoDB 会自动创建数据库和集合。

如果我把 MongoDB 的数据库名或集合名打错了会发生什么?

MongoDB 会在没有提示的情况下,以错误的名称创建一个新数据库或集合,这可能导致混淆或数据问题。

MongoDB 在数据库名和集合名方面是否区分大小写?

是的,MongoDB 中的数据库名和集合名区分大小写,因此 “Employees” 和 “employees” 会被视为不同。

如何检查我的 MongoDB 数据库是否已成功创建?

在插入数据后使用 show dbs 命令,可以查看数据库列表,包括任何新创建的数据库。

创建后还能删除 MongoDB 数据库吗?

可以。您可以在 shell 中使用 db.dropDatabase() 命令删除一个 MongoDB 数据库。

按照这些步骤操作是否必须拥有 MongoDB Atlas 账户?

不需要。本地安装的 MongoDB Community 或 Enterprise 版本也可以按相同流程操作。

_id 字段在 MongoDB 文档中的作用是什么?

MongoDB 会为每个文档自动创建一个唯一的 _id 字段,除非您自己指定,它将作为主键使用。

是否有可视化 MongoDB 数据库的工具?

是的,MongoDB Compass 等工具以及 Robo 3T 等第三方 GUI 可以帮助您直观地管理数据库。

Nic Raboy

作者

Nic Raboy

Nic Raboy 是 MongoDB 的开发者关系主管,带领一支由 Python、Java、C# 与 PHP 开发者组成的团队,创作优质内容,帮助开发者在项目中成功使用 MongoDB。他具备 Golang 与 JavaScript 经验,并常常撰写自己在开发过程中的见闻与实践。

主题