《MongoDB入门教程》第04篇 MongoDB客户端
mongo shell 是一个用于连接 MongoDB 的交互式 JavaScript 接口。mongo shell 可以用于操作 MongoDB 中的数据,也可以执行一些管理任务。show dbs 命令用于列出服务中的全部数据库,use 命令用于切换数据库,show collections 命令用于列出当前数据库中的所有集合,文档的基本操作包括创建(Create)、读取(Read)、更新(Upd
本篇我们介绍 MongoDB 客户端工具 mongo 的使用。
mongo shell
mongo shell 是一个用于连接 MongoDB 的交互式 JavaScript 接口。mongo shell 可以用于操作 MongoDB 中的数据,也可以执行一些管理任务。
mongo shell 类似于 MySQL 数据库客户端 mysql,PostgreSQL 客户端 psql,或者 Oracle 数据库中的 SQL*Plus 工具。
注意,MongoDB v5.0 开始默认弃用了随着 MongoDB 一起安装的 mongo shell,推荐使用新的 mongsh。
在使用 mongo shell 之前,我们需要下载并安装该工具。
安装完成之后,在命令行中输入以下命令:
mongosh
mongo shell 会自动连接到本地(localhosr)默认端口(27017)上的 MongoDB 服务。
mongo shell 即可以作为一个功能完备的 JavaScript 解释器,也可以作为一个 MongoDB 客户端工具。
JavaScript 解释器
mongo shell 是一个功能完备的 JavaScript 解释器,所以我们可以用它执行 JavaScript 代码。例如:
> Math.max(10,20,30);
30
mongo shell 允许输入跨行命令,当我们输入回车时它会检测 JavaScript 语句是否完整。如果语句不完整,我们可以在下一行继续输入:
> function add(a, b) {
... return a + b;
... }
> add(10,20);
30
输入 console.clear() 命令可以清空屏幕:
console.clear()
MongoDB 客户端
mongo shell 是一个 MongoDB 客户端。默认情况下,它会连接本地 MongoDB 服务中的 test 数据库,并且将数据库连接设置为全局变量 db。
db 变量可以用于查看当前数据库:
> db
test
除了 JavaScript 语法之外,mongosh 还提供了很多方便我们与 MongoDB 数据库服务器交换的命令。例如,shows dbs 命令可以列出服务中的全部数据库:
test> show dbs
admin 41 kB
config 73.7 kB
local 81.9 kB
以上输出结果显示了 3 个数据库。
如果想要切换当前数据库,可以使用 use 命令。例如,以下命令可以将当前数据库切换为 bookdb 数据库:
test> use bookdb
switched to db bookdb
注意,我们可以切换到一个不存在的数据库。此时,当我们第一次保存数据时,MongoDB 会自动创建这个数据库。
执行以上命令之后,变量 db 的值为 bookdb:
> db
bookdb
此时,我们可以通过变量 db 访问数据库 bookdb 中的集合 books:
> db.books
bookdb.books
基本的 CRUD 操作
下面我们演示一下如何创建(Create)、读取(Read)、更新(Update)以及删除(Delete)文档。这些操作也被称为 CRUD。
本文只涉及简单的 CRUD 操作,我们将会在后续教程中学习详细的 CRUD 操作。
创建文档
如果想要在集合中创建一个新的文档,可以使用 insertOne() 方法。
以下命令为集合 books 增加了一个新的文档(一本新书):
db.books.insertOne({
title: "SQL编程思想",
published_year: 2021
})
输出结果如下:
{
"acknowledged" : true,
"insertedId" : ObjectId("62bb0962874071c64b1f9b7b")
}
当我们输入回车时,mongo shell 会将命令发送到 MongoDB 服务器。如果命令有效,MongoDB 会插入文档并返回结果。
以上示例中,返回对象包含两个键:acknowledged 和 insertedId。insertedId 的值就是文档的 _id 字段。
如果我们增加文档时没有指定 _id 字段,MongoDB 会自动为文档指定一个唯一的 ObjectId 作为 _id 字段的值。
MongoDB 使用 _id 字段唯一标识集合中的文档。
查找文档
如果想要查找集合中的文档,可以使用 findOne() 方法。例如:
db.books.findOne()
输出结果如下;
{
_id: ObjectId("62bb0962874071c64b1f9b7b"),
title: 'SQL编程思想',
published_year: 2021
}
pretty() 方法可以将输出结果进行格式化显示,例如:
db.books.find().pretty()
{
"_id" : ObjectId("62bb0962874071c64b1f9b7b"),
"title" : "SQL编程思想",
"published_year" : 2021
}
更新文档
如果想要更新某个文档中的内容,可以使用 updateOne() 方法。该方法至少需要提供两个参数:
- 第一个参数指定了需要更新的文档。
- 第二个参数指定了更新操作的内容。
以下示例更新了标题为“SQL编程思想”的文档的 published_year 字段:
db.books.updateOne(
{ title: "SQL编程思想"},
{ $set: { published_year: 2022 }}
)
其中,第一个参数表示更新标题为“SQL编程思想”的第一个文档。第二个参数使用 $set 操作符更新字段 published_year 的值。返回结果如下:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
删除文档
如果想要删除集合中的某个文档,可以使用 deleteOne() 方法。该方法包含一个参数,用于指定要删除的文档。
以下示例使用 deleteOne() 方法删除集合 books 中标题为“SQL编程思想”的第一个文档:
db.books.deleteOne({title: "SQL编程思想"});
输出结果如下:
{
"acknowledged": true,
"deletedCount": 1
}
返回结果中的 deletedCount 表示成功删除了一个文档。
如果想要查看当前数据库中的所有集合,可以使用 show collections 命令:
show collections
books
数据库 bookdb 中目前只包含一个集合。
更多推荐
所有评论(0)