本篇我们介绍 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 collectionsbooks

数据库 bookdb 中目前只包含一个集合。

《MongoDB入门教程》第04篇 MongoDB客户端相关推荐

  1. MongoDB 入门教程实战学习笔记-31-mongo 聚合查询管道 Aggregation Pipieline

    aggregation 聚合操作处理数据记录并返回计算结果. 聚合操作将多个文档中的值组合在一起, 并且可以对分组数据执行各种操作以返回单个结果. mongodb 提供了三种执行聚合的方法: 聚合管道 ...

  2. Linux Capabilities 入门教程--进阶实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...

  3. 深度学习小白入门教程-基础环境篇

    深度学习小白入门教程-基础环境篇 如有图片显示失败,请回小主主页查看~ Anaconda 安装包下载方式一:官网(科学上网比较慢,不推荐) 安装包下载方式二:清华镜像(推荐) 具体安装步骤(跟着箭头来 ...

  4. Systemd 入门教程:实战篇

    Systemd 入门教程:实战篇 原文出处: 阮一峰(@ruanyf)   http://blog.jobbole.com/98671/?utm_source=blog.jobbole.com& ...

  5. Linux Capabilities 入门教程--基础实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...

  6. Systemd入门教程:命令篇

    Systemd入门教程:命令篇 转自:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 作者: 阮一峰 日期: ...

  7. 九宫怎么排列和使用_广告视频配音剪映零基础入门教程第二十三篇:剪辑之九宫格教程...

    朋友圈最火九宫格视频你们知道是怎样制作的吗?我们常常在玩朋友圈的时候想用九宫格照片,但是你们有没有遇到这种情况,想玩九宫格却发现找不到那么多能用的照片,那这时候怎么办呢?玩腻了平常图片的发法,今天我们 ...

  8. NoSQL Manager for MongoDB 操作教程 (基础篇)

    NoSQL Manager for MongoDB 教程(基础篇) 德实赋值 一.安装 官方的下载地址:NoSQL Manager for MongoDB Professional 傻瓜式安装,一路n ...

  9. 基于python的MongoDB入门教程

    总览 MongoDB是数据科学家常用的一种非结构化数据库 本文我们讨论如何使用Python(和PyMongo库)来使用MongoDB数据库. 本文我们使用Python实现对MongoDB数据库的所有基 ...

  10. MongoDB入门教程(1)

    (一)MongoDB介绍 MongoDB是一个NoSQL数据库,它是跨平台的,基于分布式文件存储的数据库,由C++语言编写的(这点很重要,则表示在Linux下需要安装gcc环境).MongoDB是以文 ...

最新文章

  1. 判断windows进程是否存在
  2. perl 的mail严格正则表达式到底要怎么写?
  3. app 后台_uni星茫UI V3.0更新uni-app多端小程序源码丸子插件wordpress后台
  4. vscode如何添加头部注释、作者注释
  5. E站账号cookie分享_58云账号跨域实践总结
  6. 高一信息技术认识计算机网络课件,中图版高中信息技术认识计算机网络课件.pptx...
  7. 手机什么软件测试打字速度,有什么软件是测试打字速度的,介绍个给我啊
  8. [iOS]仿微博视频边下边播之封装播放器
  9. 基于ResNet和Transformer的场景文本识别
  10. 2022-2027(新版)中国工业5G技术行业发展动态与前景规划分析报告
  11. matlab三维螺旋,如何在MATLAB或Python中生成三维螺旋线?
  12. 币圈的8大女神都是谁?-千氪
  13. 2K元预算为什么要买7nm处理器的OPPO A95 主要还是耐用
  14. 2003年高考数学试题赏析
  15. Java8 Lambda表达式(三)Lambda表达式与Stream API
  16. 【无标题】阳光厨房管理系统需求分析
  17. 数据分析三剑客之数据加载(四)
  18. LaTex warning:Package caption/hyperref Warning
  19. 华为1+X网络系统建设与运维(中级)——IPv6协议概述
  20. RESA CODE Generator 瑞萨代码生成工具使用简介

热门文章

  1. unreal-教程-第十七章:上半身动画和下半身动画的混合
  2. win7自动弹出计算机硬盘窗口,Win7弹出“Windows检测到一个硬盘问题”窗口怎么关闭...
  3. 关于AES128加解密的使用
  4. 记录待办事项的手机软件有提醒的用哪个
  5. mysql geo 函数_【后端开发】地理位置geo处理之mysql函数的详细介绍(附代码)
  6. 安装mpich运行hpl测试
  7. [极客大挑战 2019]Http1
  8. 哈工程计算机学院论文造假,《河南工程学院本科毕业论文(设计)学术不端行为检测及处理规定》的规定...
  9. bugku-eval
  10. SAP和Salesforce,什么叫宿命?