《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 collectionsbooks
数据库 bookdb 中目前只包含一个集合。
《MongoDB入门教程》第04篇 MongoDB客户端相关推荐
- MongoDB 入门教程实战学习笔记-31-mongo 聚合查询管道 Aggregation Pipieline
aggregation 聚合操作处理数据记录并返回计算结果. 聚合操作将多个文档中的值组合在一起, 并且可以对分组数据执行各种操作以返回单个结果. mongodb 提供了三种执行聚合的方法: 聚合管道 ...
- Linux Capabilities 入门教程--进阶实战篇
该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...
- 深度学习小白入门教程-基础环境篇
深度学习小白入门教程-基础环境篇 如有图片显示失败,请回小主主页查看~ Anaconda 安装包下载方式一:官网(科学上网比较慢,不推荐) 安装包下载方式二:清华镜像(推荐) 具体安装步骤(跟着箭头来 ...
- Systemd 入门教程:实战篇
Systemd 入门教程:实战篇 原文出处: 阮一峰(@ruanyf) http://blog.jobbole.com/98671/?utm_source=blog.jobbole.com& ...
- Linux Capabilities 入门教程--基础实战篇
该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...
- Systemd入门教程:命令篇
Systemd入门教程:命令篇 转自:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 作者: 阮一峰 日期: ...
- 九宫怎么排列和使用_广告视频配音剪映零基础入门教程第二十三篇:剪辑之九宫格教程...
朋友圈最火九宫格视频你们知道是怎样制作的吗?我们常常在玩朋友圈的时候想用九宫格照片,但是你们有没有遇到这种情况,想玩九宫格却发现找不到那么多能用的照片,那这时候怎么办呢?玩腻了平常图片的发法,今天我们 ...
- NoSQL Manager for MongoDB 操作教程 (基础篇)
NoSQL Manager for MongoDB 教程(基础篇) 德实赋值 一.安装 官方的下载地址:NoSQL Manager for MongoDB Professional 傻瓜式安装,一路n ...
- 基于python的MongoDB入门教程
总览 MongoDB是数据科学家常用的一种非结构化数据库 本文我们讨论如何使用Python(和PyMongo库)来使用MongoDB数据库. 本文我们使用Python实现对MongoDB数据库的所有基 ...
- MongoDB入门教程(1)
(一)MongoDB介绍 MongoDB是一个NoSQL数据库,它是跨平台的,基于分布式文件存储的数据库,由C++语言编写的(这点很重要,则表示在Linux下需要安装gcc环境).MongoDB是以文 ...
最新文章
- 判断windows进程是否存在
- perl 的mail严格正则表达式到底要怎么写?
- app 后台_uni星茫UI V3.0更新uni-app多端小程序源码丸子插件wordpress后台
- vscode如何添加头部注释、作者注释
- E站账号cookie分享_58云账号跨域实践总结
- 高一信息技术认识计算机网络课件,中图版高中信息技术认识计算机网络课件.pptx...
- 手机什么软件测试打字速度,有什么软件是测试打字速度的,介绍个给我啊
- [iOS]仿微博视频边下边播之封装播放器
- 基于ResNet和Transformer的场景文本识别
- 2022-2027(新版)中国工业5G技术行业发展动态与前景规划分析报告
- matlab三维螺旋,如何在MATLAB或Python中生成三维螺旋线?
- 币圈的8大女神都是谁?-千氪
- 2K元预算为什么要买7nm处理器的OPPO A95 主要还是耐用
- 2003年高考数学试题赏析
- Java8 Lambda表达式(三)Lambda表达式与Stream API
- 【无标题】阳光厨房管理系统需求分析
- 数据分析三剑客之数据加载(四)
- LaTex warning:Package caption/hyperref Warning
- 华为1+X网络系统建设与运维(中级)——IPv6协议概述
- RESA CODE Generator 瑞萨代码生成工具使用简介
热门文章
- unreal-教程-第十七章:上半身动画和下半身动画的混合
- win7自动弹出计算机硬盘窗口,Win7弹出“Windows检测到一个硬盘问题”窗口怎么关闭...
- 关于AES128加解密的使用
- 记录待办事项的手机软件有提醒的用哪个
- mysql geo 函数_【后端开发】地理位置geo处理之mysql函数的详细介绍(附代码)
- 安装mpich运行hpl测试
- [极客大挑战 2019]Http1
- 哈工程计算机学院论文造假,《河南工程学院本科毕业论文(设计)学术不端行为检测及处理规定》的规定...
- bugku-eval
- SAP和Salesforce,什么叫宿命?