![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=1738887953-OzEeVKfGr4NKWfLH6upXK14ceDfbwReC-0-f7eeb9b226b382d6f51c7c75526c3a81)
其中,--port选项用于指定数据库的监听端口。当然,默认连接的是本地数据库,如果需要连接远程数据库,则可以指定--host选项,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_34_4.jpg?sign=1738887953-qcZZAez5YriVquvRB50mipNIdpBfXFE8-0-693edbd6c0e1c9e51c86d41d2a7ab176)
进入mongo shell之后,客户端会建立一个到服务器的连接。
接下来,使用show databases命令查看数据库列表,具体如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_1.jpg?sign=1738887953-x6BscFGyo9NQ9gvKcF5XbQKJD2B3hfQS-0-28702e83b0bfc126225f23e6b4a32c31)
这里发生了一点错误,原因是当前的shell连接还没有进行用户鉴权。此时可以使用admin用户进行鉴权,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_2.jpg?sign=1738887953-EkKEm3yEb7kj7jObVTM5xvrZQLTSv3Ek-0-e9e7dbe2c0d444b6fd75c3b6896f89cd)
可以看到,在用户鉴权成功之后,show databases输出了所有的数据库列表,以及每个库的大小。如果读者觉得用户鉴权的动作太过烦琐,则可以在连接时就把鉴权信息加上,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_3.jpg?sign=1738887953-nXCWQXlziqPzs5mGeUYhlZ1lADD9dgwQ-0-d4acfef7515711f425279cd2f52cb3c4)
2.JavaScript支持
mongo shell是基于JavaScript语法的,在shell中执行JavaScript代码,如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_35_4.jpg?sign=1738887953-MaHjDQVGiw93lX4DDdy8OJ1ft5IIW1oU-0-099ad46d221835aa34219c6abefd06b1)
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=1738887953-jPUsBt3TQQTzYyOUJf28DJ06ZoeWJ19d-0-4f2c740e541d6a3b7535f93ac3733d0f)
注意:在MongoDB 3.2版本之前,采用了V8作为JavaScript解释器引擎,新版本中已经将其废弃。
借由高级的SpiderMonkey引擎,我们可以在mongo shell中使用ES 6风格的代码,如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_2.jpg?sign=1738887953-QepWb5HCRnRRSDkhKkMpwbrsW8j46Cem-0-2d82978b7622080b90e506ea536a19c3)
3.执行脚本
除了交互的方式,mongo shell也支持以非交互的方式执行脚本。
使用--eval可以指定一段JavaScript代码:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_3.jpg?sign=1738887953-B7Jm3kjieRJmCsSJm93vx3bMCIEdyFSY-0-5a2ddafb8b631f4dfc887e5e5c82eeef)
或者,直接指定一个JavaScript文件:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_4.jpg?sign=1738887953-N9IbKI1buqBZvW65lhRVOsu2akancGCy-0-bc54bab891658ecaafe8a2ff734400e2)
4.常用命令
mongo shell常用命令见表2-4。
表2-4 mongo shell常用命令
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_36_5.jpg?sign=1738887953-p0FForN38cRBTEMsscuNtURYlbEQlnWd-0-db2acf8f9a91ac76816d67ffc00643e8)
续表
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_37_1.jpg?sign=1738887953-wNx1Y0y3vxOuhIEdsRiur2MNo2o7k5AG-0-5e5eb5bf6ebedce98a73149fc66d697b)