创建 MongoDB 集合

MongoDBBeginner
立即练习

介绍

在本实验中,你将学习使用 MongoDB 的基本步骤。你将使用 MongoDB Shell (mongosh) 来创建数据库、添加集合、插入文档以及执行基本的数据管理操作。这种实践方法将为你提供核心 MongoDB 命令的实际操作经验,为你更高级的数据库任务打下坚实的基础。

启动 MongoDB Shell 并创建数据库

你的第一步是使用 MongoDB 的交互式 Shell mongosh 连接到 MongoDB 服务器。这个工具允许你直接对数据库实例执行命令。

在你的终端中,运行 mongosh 命令来启动 MongoDB Shell。

mongosh

你将看到一条连接消息,表明你已进入 mongosh 环境。

Current Mongosh Log ID: 65a7f3e8f5a8a9b3c4d5e6f7
Connecting to:           mongodb://127.0.0.1:27017/
Using MongoDB:           8.0.2
Using Mongosh:           2.2.6
...
test>

test> 提示符表示你当前已连接到默认的 test 数据库。让我们切换到一个新的数据库来存放我们的项目。在 MongoDB 中,你可以切换到一个尚不存在的数据库。当你首次向其中存储数据时,它会自动创建。

使用 use 命令切换到一个名为 my_store 的新数据库。

use my_store

Shell 会确认切换。

switched to db my_store

要确认你当前正在使用的数据库,可以输入 db

db;

输出将显示当前数据库的名称。

my_store

创建集合并插入文档

现在你已进入 my_store 数据库,下一步是创建一个集合。集合是 MongoDB 文档的 agrupamiento,类似于关系数据库中的表。

让我们创建一个名为 products 的集合。你可以使用 createCollection() 方法显式创建它。

db.createCollection("products");

成功的操作将返回一个表示成功的对象。

{ ok: 1 }

你可以列出当前数据库中的所有集合来验证 products 是否已创建。

show collections
products

集合创建完成后,你就可以插入第一个文档了。文档是 BSON 对象,它是类似 JSON 的文档的二进制编码序列化。

使用 insertOne() 方法向 products 集合添加单个文档。

db.products.insertOne({
  name: "Laptop",
  price: 1200,
  category: "Electronics"
});

MongoDB 将确认插入操作,并提供新文档的唯一 _id

{
  acknowledged: true,
  insertedId: ObjectId("...")
}

这个 ObjectId 是为每个文档自动生成的,并作为其主键。

插入多个文档

通常,你需要一次性向集合中添加多个文档。MongoDB 为此提供了 insertMany() 方法。此方法比多次调用 insertOne() 更高效。

让我们向 products 集合添加另外两个产品。insertMany() 方法接受一个文档对象数组作为其参数。

db.products.insertMany([
  {
    name: "Keyboard",
    price: 75,
    category: "Electronics"
  },
  {
    name: "Desk Chair",
    price: 150,
    category: "Furniture"
  }
]);

输出将确认操作已被确认,并列出每个新插入文档的 _id 值。

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("...")
  }
}

现在,让我们检查 products 集合中文档的总数。你可以为此使用 countDocuments() 方法。

db.products.countDocuments();

Shell 应该返回 3,这反映了上一步中的一个文档以及你刚刚添加的两个文档。

3

查询和查看文档

插入数据后,你将需要检索和查看它。查询集合的主要方法是 find()

要查看 products 集合中的所有文档,请在不带任何参数的情况下运行 find() 方法。

db.products.find();

mongosh shell 会自动格式化输出以提高可读性,显示你集合中的所有三个文档。

[
  {
    _id: ObjectId("..."),
    name: 'Laptop',
    price: 1200,
    category: 'Electronics'
  },
  {
    _id: ObjectId("..."),
    name: 'Keyboard',
    price: 75,
    category: 'Electronics'
  },
  {
    _id: ObjectId("..."),
    name: 'Desk Chair',
    price: 150,
    category: 'Furniture'
  }
]

find() 方法还可以接受一个查询文档来过滤结果。这允许你查找符合特定标准的文档。例如,让我们查找“Electronics”类别中的所有产品。

db.products.find({ category: "Electronics" });

此命令将仅返回 category 字段值为“Electronics”的文档。

[
  {
    _id: ObjectId("..."),
    name: 'Laptop',
    price: 1200,
    category: 'Electronics'
  },
  {
    _id: ObjectId("..."),
    name: 'Keyboard',
    price: 75,
    category: 'Electronics'
  }
]

这种简单的过滤功能是从集合中检索特定数据的强大功能。

删除集合

在最后一步,你将学习如何从数据库中删除一个集合。此操作是不可逆的,它会删除集合及其所有文档和索引。这对于清理临时数据或删除过时的集合非常有用。

为了演示这一点,让我们先创建一个临时集合。

db.createCollection("temp_data");
{ ok: 1 }

现在,在 temp_data 集合上使用 drop() 方法将其删除。

db.temp_data.drop();

如果集合已成功删除,该命令将返回 true

true

为了验证集合已被删除,你可以再次列出数据库中的所有集合。

show collections

输出现在将只显示 products 集合,确认 temp_data 已被删除。

products

至此,我们完成了 MongoDB 中管理集合的基本操作。请记住在你完成时退出 mongosh shell。

exit;

总结

在本实验中,你学习了使用 MongoDB 的基本技能。你首先使用 mongosh shell 连接到 MongoDB 实例。然后,你练习了创建数据库和集合,插入单个和多个文档,并使用 find() 方法查询这些数据。最后,你学习了如何使用 drop() 命令安全地删除集合。这些核心操作——创建(Create)、读取(Read)和删除(Delete)——是任何使用 MongoDB 作为其数据存储的应用程序的基石。你现在已经掌握了在 MongoDB 环境中管理数据的基本知识。