《MongoDB入门教程》第04篇 MongoDB客户端

Posted 不剪发的Tony老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《MongoDB入门教程》第04篇 MongoDB客户端相关的知识,希望对你有一定的参考价值。

本篇我们介绍 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 中目前只包含一个集合。

以上是关于《MongoDB入门教程》第04篇 MongoDB客户端的主要内容,如果未能解决你的问题,请参考以下文章

《MongoDB入门教程》第04篇 MongoDB客户端

《MongoDB入门教程》第01篇 MongoDB简介

《MongoDB入门教程》第02篇 MongoDB安装

《MongoDB入门教程》第02篇 MongoDB安装

《MongoDB入门教程》第03篇 MongoDB基本概念

《MongoDB入门教程》第03篇 MongoDB基本概念