简介
欢迎使用 LabEx!这是你的第一个 MongoDB 实验。即使你以前从未使用过数据库,也不用担心——本实验会带你完成每个步骤。
首先了解 MongoDB:MongoDB 是一种数据库系统,使用灵活的文档格式存储数据。与传统电子表格不同,MongoDB 可以更自然地组织数据,类似于你在计算机上使用文件夹组织文件的方式。
在本实验中,你将学习如何:
- 启动 MongoDB Shell 并了解它的作用
- 创建你的第一个数据库和集合
- 在 MongoDB 中添加和查看数据
- 查询、更新和删除数据
这些技能将为你后续学习 MongoDB 打下基础。现在开始吧!
点击下方的 Continue 按钮开始实验。
启动 MongoDB Shell
在本步骤中,你将在 LabEx VM 中打开终端并启动 MongoDB Shell。
推荐使用 Terminal Interface,因为它速度快且易于使用。MongoDB 相关实验默认使用此界面。

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

两种方式的效果完全相同,只是访问同一实验环境的方式不同。选择你喜欢的方式即可。
现在启动 MongoDB Shell。你可以把 Shell 理解为数据库的控制面板:输入命令后,MongoDB 会返回响应。
在终端中输入以下命令,然后按回车键:
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 中,不需要显式创建数据库。第一次向数据库存储数据时,MongoDB 会自动创建它。要切换到新数据库,请使用 use 命令。
切换到名为 mylab_database 的数据库。在 mongosh Shell 中输入:
use mylab_database
Shell 会返回 switched to db mylab_database。虽然该数据库还没有真正创建,但你现在已经进入了它的上下文。
MongoDB 使用集合存储数据,集合由多个文档组成。文档是一组键值对。接下来通过插入第一个文档来创建 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
要查找特定文档,可以将查询过滤条件传递给 find() 方法。查询过滤条件是一个用于指定搜索条件的文档。
例如,要查找所有由 "JohnDoe" 编写的书籍,使用以下查询:
db.books.find({ author: "JohnDoe" })
过滤条件 { author: "JohnDoe" } 告诉 MongoDB,只返回 author 字段值为 "JohnDoe" 的文档。
你也可以根据数值进行查询。查找所有在 2023 年出版的书籍:
db.books.find({ year: 2023 })
该命令会返回 "MongoDBBasics" 这本书。find() 方法是检索所需精确数据的强大工具。
更新和删除文档
在本步骤中,你将更新并删除集合中的文档。
要修改已有文档,请使用 updateOne() 方法。该方法接收一个用于选择文档的过滤条件,以及一个用于描述修改内容的更新文档。$set 运算符只会修改指定字段。
将 "PythonProgramming" 这本书的出版年份从 2022 更新为 2024:
db.books.updateOne(
{ title: "PythonProgramming" },
{ $set: { year: 2024 } }
)
MongoDB 会确认找到并修改了一个文档:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
检查更新后的文档:
db.books.find({ title: "PythonProgramming" })
结果中,"PythonProgramming" 这本书的 year 现在应为 2024。
接下来从集合中删除文档。
要删除符合特定条件的单个文档,请使用 deleteOne() 方法。删除标题为 "MongoDBBasics" 的书籍:
db.books.deleteOne({ title: "MongoDBBasics" })
Shell 会确认已删除一个文档:
{ acknowledged: true, deletedCount: 1 }
要删除所有符合条件的文档,请使用 deleteMany()。此方法支持使用查询运算符创建更复杂的条件。例如,$lt 表示「小于」。
删除所有出版年份早于 2022 年的书籍:
db.books.deleteMany({ year: { $lt: 2022 } })
该命令会删除 year 字段小于 2022 的所有文档。在当前示例中,它会删除 "DataScienceHandbook"。
最后再次运行 find() 命令,查看剩余的书籍:
db.books.find()
集合中应该只剩下 "PythonProgramming" 这本书。
现在,你已经练习了 MongoDB 的基本 CRUD(创建、读取、更新、删除)操作。要退出 mongosh Shell,请输入:
exit
总结
恭喜你完成了第一个 MongoDB 实验!你已经成功学习并练习了管理 MongoDB 数据库数据的核心操作。
在本实验中,你学习了如何:
- 启动
mongoshShell,与 MongoDB 服务器交互。 - 使用
use命令切换数据库。 - 使用
insertOne()和insertMany()插入单个或多个文档。 - 使用带查询过滤条件或不带查询过滤条件的
find()检索文档。 - 使用
countDocuments()统计集合中的文档数量。 - 使用
updateOne()和$set运算符更新文档。 - 使用
deleteOne()和deleteMany()删除文档。
这些基础技能是使用 MongoDB 开发强大应用程序的基础。熟能生巧,欢迎继续尝试使用你学到的命令。

