介绍
欢迎来到 LabEx!这是你的第一个 MongoDB 实验。如果你之前从未用过数据库,也请不用担心——我们会一步步指导你。
首先,让我们了解一下 MongoDB 是什么:MongoDB 是一个数据库系统,它以灵活的文档格式存储数据。与传统的电子表格不同,MongoDB 允许你以更自然的方式组织数据,这类似于你在电脑上将文件组织到文件夹中的方式。
在本实验中,你将学习如何:
- 启动 MongoDB shell 并了解它的作用
- 创建你的第一个数据库和集合 (collection)
- 在 MongoDB 中添加和查看数据
- 统计和删除数据
这些技能将为你 MongoDB 之旅打下基础。让我们开始吧!
点击下方 Continue 按钮开始实验。
启动 MongoDB Shell
在启动 MongoDB 之前,我们需要先在你的 LabEx 虚拟机中打开一个终端。你有两种方法可以做到:
**终端界面 (Terminal Interface)**:我们推荐使用终端界面,因为它速度快且易于使用。这是 MongoDB 相关实验的默认界面。

**桌面界面 (Desktop Interface)**:如果你更喜欢传统的终端体验,可以使用桌面界面。查看桌面左侧,然后点击标有 Xfce Terminal 的图标。

这两种方法效果一样好——它们只是访问同一实验环境的不同方式。选择你喜欢的方式即可!
现在,让我们启动 MongoDB shell,它就像我们数据库的控制面板。你可以将 shell 理解为直接与 MongoDB 对话的方式——你输入命令,MongoDB 会做出响应。
要启动 MongoDB Shell,请在你的终端中输入以下命令并按 Enter 键:
mongosh
你将看到一个连接消息,表明你已成功连接到本地 MongoDB 实例。输出将类似于:
Current Mongosh Log ID: 65a7f3e5f1a1234567890abc
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+x.y.z
Using MongoDB: X.X.X
Using Mongosh: X.X.X
For mongosh info, see: https://docs.mongodb.com/mongodb-shell/
test>
test> 提示符表示你现在已进入 mongosh shell,并已连接到默认的 test 数据库。
让我们列出服务器上所有现有的数据库。在 mongosh shell 中输入以下命令:
show dbs
你将看到一个列表,其中包含 MongoDB 用于内部目的的默认数据库:
admin 40.00 KiB
config 112.00 KiB
local 40.00 KiB
在下一步中,你将创建自己的数据库。
创建数据库并插入文档
在 MongoDB 中,你无需显式创建数据库。当你首次向数据库存储数据时,它会自动创建。要切换到新数据库,请使用 use 命令。
让我们切换到一个名为 mylab_database 的数据库。在 mongosh shell 中,输入:
use mylab_database
Shell 会回复 switched to db mylab_database。即使数据库尚未创建,你现在也已在它的上下文中进行操作。
MongoDB 中的数据存储在集合 (collections) 中,集合是文档 (documents) 的分组。文档是一组键值对。让我们通过插入第一个文档来创建一个 users 集合。
使用 insertOne() 方法向 users 集合添加单个文档:
db.users.insertOne({ name: "JohnDoe", age: 30, city: "NewYork" })
让我们分解一下这个命令:
db: 代表当前数据库 (mylab_database)。users: 集合的名称。它将自动创建。insertOne(): 插入一个文档的方法。{...}: 文档本身,包含name、age和city等字段。
MongoDB 会确认插入操作,并返回它为该文档生成的唯一 _id:
{
acknowledged: true,
insertedId: ObjectId("...")
}
ObjectId 是一个唯一标识符,会自动分配给每个文档。
现在,让我们验证文档是否已添加。使用 find() 方法查看 users 集合中的所有文档:
db.users.find()
输出将显示你刚刚插入的文档:
[
{
_id: ObjectId("..."),
name: 'JohnDoe',
age: 30,
city: 'NewYork'
}
]
插入多个文档
通常,你需要一次性添加多个文档。insertMany() 方法非常适合此目的。它接受一个文档数组作为其参数。
让我们创建一个新的 books 集合,并用一个命令向其中添加三本书。
db.books.insertMany([
{ title: "MongoDBBasics", author: "JaneSmith", year: 2023 },
{ title: "PythonProgramming", author: "JohnDoe", year: 2022 },
{ title: "DataScienceHandbook", author: "AliceJohnson", year: 2021 }
])
注意方括号 [ ],它们定义了一个数组。数组中的每个对象 {...} 都是一个单独的文档。
MongoDB 会确认操作,并返回所有已插入文档的 _id 值:
{
acknowledged: true,
insertedIds: {
'0': ObjectId("..."),
'1': ObjectId("..."),
'2': ObjectId("...")
}
}
要查看新创建的 books 集合中的所有文档,请再次使用 find() 方法:
db.books.find()
输出将列出你刚刚添加的所有三本书籍文档。
查询和计数文档
现在你有了数据,让我们学习如何检索和计数它。
要计算集合中文档的总数,请使用 countDocuments() 方法。让我们计算 books 集合中的书籍数量:
db.books.countDocuments()
该命令将返回总数:
3
要查找特定文档,你需要将查询过滤器 (query filter) 传递给 find() 方法。查询过滤器是一个指定搜索条件的文档。
例如,要查找所有由 "JohnDoe" 编写的书籍,请使用以下查询:
db.books.find({ author: "JohnDoe" })
过滤器 { author: "JohnDoe" } 告诉 MongoDB 只返回 author 字段值为 "JohnDoe" 的文档。
你也可以基于数值进行查询。让我们查找所有在 2023 年出版的书籍:
db.books.find({ year: 2023 })
这将返回 "MongoDBBasics" 这本书。find() 方法是检索你所需精确数据的强大工具。
删除文档
最后,让我们学习如何从集合中删除文档。
要删除匹配特定条件的单个文档,请使用 deleteOne() 方法。让我们删除标题为 "MongoDBBasics" 的书籍:
db.books.deleteOne({ title: "MongoDBBasics" })
Shell 会确认已删除一个文档:
{ acknowledged: true, deletedCount: 1 }
要删除匹配条件的多个文档,请使用 deleteMany()。此方法支持查询操作符来创建更复杂的条件。例如,$lt 代表 "小于" (less than)。
让我们删除所有在 2022 年之前出版的书籍:
db.books.deleteMany({ year: { $lt: 2022 } })
此命令将删除 year 字段值小于 2022 的所有文档。在本例中,它将删除 "DataScienceHandbook"。
要查看剩余的书籍,请最后运行一次 find() 命令:
db.books.find()
集合中应该只剩下 "PythonProgramming" 这本书。
你现在已经练习了 MongoDB 中的基本 CRUD (Create, Read, Update, Delete) 操作。要退出 mongosh shell,请输入:
exit
总结
恭喜你完成了你的第一个 MongoDB 实验!你已成功学习并实践了在 MongoDB 数据库中管理数据的核心操作。
在此实验中,你学习了如何:
- 启动
mongoshshell 以与 MongoDB 服务器进行交互。 - 使用
use命令切换到数据库。 - 使用
insertOne()和insertMany()插入单个和多个文档。 - 使用带或不带查询过滤器的
find()来检索文档。 - 使用
countDocuments()来计数集合中的文档。 - 使用
deleteOne()和deleteMany()来删除文档。
这些基本技能是使用 MongoDB 开发强大应用程序的基石。熟能生巧,请随时进一步尝试你学过的命令。

