当前位置:网站首页>《MongoDB入门教程》第04篇 MongoDB客户端
《MongoDB入门教程》第04篇 MongoDB客户端
2022-07-05 15:34:00 【不剪发的Tony老师】
本篇我们介绍 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 中目前只包含一个集合。
边栏推荐
- 异常com.alibaba.fastjson.JSONException: not match : - =
- CSDN I'm coming
- Vulnhub-Moneybox
- Why should we learn mathematical modeling?
- 21. [STM32] I don't understand the I2C protocol. Dig deep into the sequence diagram to help you write the underlying driver
- 16.[STM32]从原理开始带你了解DS18B20温度传感器-四位数码管显示温度
- D-snow halo solution
- 视觉体验全面升级,豪威集团与英特尔Evo 3.0共同加速PC产业变革
- Basic JSON operations of MySQL 5.7
- 18.[stm32] read the ROM of DS18B20 temperature sensor and realize multi-point temperature measurement
猜你喜欢
CSRF, XSS science popularization and defense
[Netease Yunxin] research and practice of super-resolution technology in the field of real-time audio and video
vlunhub- BoredHackerBlog Social Network
抽象类中子类与父类
一文搞定vscode编写go程序
List de duplication and count the number
Why should we learn mathematical modeling?
开发中Boolean类型使用遇到的坑
MySQL overview
lv_ font_ Conv offline conversion
随机推荐
ES6深入—ES6 Class 类
Appium自动化测试基础 — APPium基础操作API(一)
keep-alive
Dataarts studio data architecture - Introduction to data standards
CODING DevSecOps 助力金融企业跑出数字加速度
研发效能度量指标构成及效能度量方法论
Transfer the idea of "Zhongtai" to the code
Analytic hierarchy process of mathematical modeling (including Matlab code)
Data communication foundation smart_ Link_&_ Monitor_ Link
Data communication foundation - dynamic routing protocol rip
Fundamentals of data communication - Principles of IP routing
Relationship between objects and classes
17. [stm32] use only three wires to drive LCD1602 LCD
The visual experience has been comprehensively upgraded, and Howell group and Intel Evo 3.0 have jointly accelerated the reform of the PC industry
21. [STM32] I don't understand the I2C protocol. Dig deep into the sequence diagram to help you write the underlying driver
Summary of the second lesson
abstract关键字和哪些关键字会发生冲突呢
16.[STM32]从原理开始带你了解DS18B20温度传感器-四位数码管显示温度
CSRF, XSS science popularization and defense
lv_ font_ Conv offline conversion