![MongoDB进阶与实战:微服务整合、性能优化、架构管理](https://wfqqreader-1252317822.image.myqcloud.com/cover/697/38209697/b_38209697.jpg)
2.2 使用mongo shell
mongo shell是一个连接MongoDB的交互式客户端,可以通过它来执行数据的查询、管理等一系列操作。
1.连接数据库
执行下面的命令:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_34_3.jpg?sign=1739035248-z8hVunSIBRhF75XleYIxvpTkeyCU05gF-0-8a185e18edda58ae3c511b2082268cd6)
其中,--port选项用于指定数据库的监听端口。当然,默认连接的是本地数据库,如果需要连接远程数据库,则可以指定--host选项,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_34_4.jpg?sign=1739035248-pEjzJlfaKu0YdrGAZfT1qOz4qEbh34nN-0-3127866629b1aa6022909f2c5fdd6e57)
进入mongo shell之后,客户端会建立一个到服务器的连接。
接下来,使用show databases命令查看数据库列表,具体如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_1.jpg?sign=1739035248-7tBLKr9AxmIFDoB9jNLc9wjARF2TMRhe-0-ae1ec09190523ce8bcfd69459ffe5741)
这里发生了一点错误,原因是当前的shell连接还没有进行用户鉴权。此时可以使用admin用户进行鉴权,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_2.jpg?sign=1739035248-oABJe6KGyMJS0Jy67lPjwmhf0Oc98cDX-0-6dc7709795ae0cc6d553746e785d7d7e)
可以看到,在用户鉴权成功之后,show databases输出了所有的数据库列表,以及每个库的大小。如果读者觉得用户鉴权的动作太过烦琐,则可以在连接时就把鉴权信息加上,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_3.jpg?sign=1739035248-p9kieu20sJIDrzqufAnEtha1QLAflY29-0-adb7c6053366b0e85426c5d60333558a)
2.JavaScript支持
mongo shell是基于JavaScript语法的,在shell中执行JavaScript代码,如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_4.jpg?sign=1739035248-0p8iOer2EmZiPXzART2QppBBdylpATim-0-167ab88ceef909fe7d184cc455651f3c)
MongoDB使用了SpiderMonkey作为其内部的JavaScript解释器引擎,这是由Mozilla官方提供的JavaScript内核解释器,该解释器也被同样用于大名鼎鼎的Firefox浏览器产品之中。SpiderMonkey对ECMA Script标准兼容性非常好,可以支持ECMA Script 6。
可以通过下面的命令检查JavaScript解释器的版本:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_1.jpg?sign=1739035248-52DDTzJveojI4rpnVaDbEb0Rjw4Gr4IJ-0-4d9472fa6f30a420b560ce1463febcf1)
注意:在MongoDB 3.2版本之前,采用了V8作为JavaScript解释器引擎,新版本中已经将其废弃。
借由高级的SpiderMonkey引擎,我们可以在mongo shell中使用ES 6风格的代码,如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_2.jpg?sign=1739035248-KdI2CbWTUm4WRCc0efGHmMz5QyOB7nnF-0-39a5d37fe2600e87dc8911f4db06b323)
3.执行脚本
除了交互的方式,mongo shell也支持以非交互的方式执行脚本。
使用--eval可以指定一段JavaScript代码:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_3.jpg?sign=1739035248-LLIon5ehmQdiOAIR6pVucSqLOY1M6EAS-0-1d82861a56932e1606b5c6c35a4f04a4)
或者,直接指定一个JavaScript文件:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_4.jpg?sign=1739035248-lfsyj84WxgLmNCNILOrBhc08iuxeoQsz-0-67e5c6e048172d76edb1eed2db805cd3)
4.常用命令
mongo shell常用命令见表2-4。
表2-4 mongo shell常用命令
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_5.jpg?sign=1739035248-lw4MjTg4yIBZppQumrzzBoqIDYS9MSxd-0-90ed030cceeb04ec7e24c6fafc7cc437)
续表
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_37_1.jpg?sign=1739035248-UhbRVHZQ4iI0tdUuxlHROzG2CponAXuf-0-f88175b9863136b1442dab3a6530528b)