你的第一个 MongoDB 实验

MongoDBBeginner
立即练习

简介

欢迎使用 LabEx!这是你的第一个 MongoDB 实验。即使你以前从未使用过数据库,也不用担心——本实验会带你完成每个步骤。

首先了解 MongoDB:MongoDB 是一种数据库系统,使用灵活的文档格式存储数据。与传统电子表格不同,MongoDB 可以更自然地组织数据,类似于你在计算机上使用文件夹组织文件的方式。

在本实验中,你将学习如何:

  1. 启动 MongoDB Shell 并了解它的作用
  2. 创建你的第一个数据库和集合
  3. 在 MongoDB 中添加和查看数据
  4. 查询、更新和删除数据

这些技能将为你后续学习 MongoDB 打下基础。现在开始吧!

点击下方的 Continue 按钮开始实验。

启动 MongoDB Shell

在本步骤中,你将在 LabEx VM 中打开终端并启动 MongoDB Shell。

推荐使用 Terminal Interface,因为它速度快且易于使用。MongoDB 相关实验默认使用此界面。

在 Terminal Interface 中打开终端

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

在 Desktop Interface 中打开终端

两种方式的效果完全相同,只是访问同一实验环境的方式不同。选择你喜欢的方式即可。

现在启动 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():用于插入一个文档的方法。
  • {...}:文档本身,其中包含 nameagecity 等字段。

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 数据库数据的核心操作。

在本实验中,你学习了如何:

  • 启动 mongosh Shell,与 MongoDB 服务器交互。
  • 使用 use 命令切换数据库。
  • 使用 insertOne()insertMany() 插入单个或多个文档。
  • 使用带查询过滤条件或不带查询过滤条件的 find() 检索文档。
  • 使用 countDocuments() 统计集合中的文档数量。
  • 使用 updateOne()$set 运算符更新文档。
  • 使用 deleteOne()deleteMany() 删除文档。

这些基础技能是使用 MongoDB 开发强大应用程序的基础。熟能生巧,欢迎继续尝试使用你学到的命令。