![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=1739266149-2bqFi76RL3xgl3Wh0OqYLGCeNcEbtvWm-0-0a8e561e7762656ae284af9c95d6cdf2)
其中,--port选项用于指定数据库的监听端口。当然,默认连接的是本地数据库,如果需要连接远程数据库,则可以指定--host选项,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_34_4.jpg?sign=1739266149-mlLm1RAZM8vCllEauaNR0GzhhvAgToPO-0-d886005b5d91b015031a3637f945b0eb)
进入mongo shell之后,客户端会建立一个到服务器的连接。
接下来,使用show databases命令查看数据库列表,具体如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_1.jpg?sign=1739266149-5XTeuF6HYEPVe9sfnsmtJTabcgUJL7bj-0-53334f9e0fd2a2a4f392e231b838e511)
这里发生了一点错误,原因是当前的shell连接还没有进行用户鉴权。此时可以使用admin用户进行鉴权,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_2.jpg?sign=1739266149-reSNxC2THEoBZiGRs3vcung1QssZ8lfx-0-9d8d74b1b584cb798e98a39c14fbb4e4)
可以看到,在用户鉴权成功之后,show databases输出了所有的数据库列表,以及每个库的大小。如果读者觉得用户鉴权的动作太过烦琐,则可以在连接时就把鉴权信息加上,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_3.jpg?sign=1739266149-Fd4I9mcu7w3YFO8ghBgnaqHLHExk5baA-0-238fb24046edb50c8ffaff23e054f4cb)
2.JavaScript支持
mongo shell是基于JavaScript语法的,在shell中执行JavaScript代码,如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_4.jpg?sign=1739266149-2EuGA5aLsQrYx9Egkoym8O7KH0BEhfYm-0-85d6c631c23a4bfb7d99341d4426786c)
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=1739266149-iIKL3hJqIbwmKsKCD94fHGYGDOcqErl2-0-8de49d036d4b225d91ad84d6014ec039)
注意:在MongoDB 3.2版本之前,采用了V8作为JavaScript解释器引擎,新版本中已经将其废弃。
借由高级的SpiderMonkey引擎,我们可以在mongo shell中使用ES 6风格的代码,如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_2.jpg?sign=1739266149-jy4BVFQabMEU7Pr9XB5vcCqZQyzJR4Ox-0-dc66d3ba45cee8f6e8c772732d29c223)
3.执行脚本
除了交互的方式,mongo shell也支持以非交互的方式执行脚本。
使用--eval可以指定一段JavaScript代码:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_3.jpg?sign=1739266149-4HiwSI4Vxsjx1sxXgP72TVYREFf8R18r-0-76386c2c13256a8a0b553b8a1dcaf6bf)
或者,直接指定一个JavaScript文件:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_4.jpg?sign=1739266149-nnhQ4r0kq7e8DAS3RQ8YxvfowPTRBTwM-0-0a883d8ea538b37a923e743bfda5ae90)
4.常用命令
mongo shell常用命令见表2-4。
表2-4 mongo shell常用命令
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_5.jpg?sign=1739266149-LxZQyACJwkEv6MeLnCQT5E89wJCJfWbT-0-702a43242815103a733f97a1513dc2fb)
续表
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_37_1.jpg?sign=1739266149-k5PO8yU9ytj74RoUVhk6NrGD3UBZwyZ5-0-ce0aa23f6ca94023d325c5bd3d0aa7fa)