![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuIGMhZzM2UzYzMmZ2U2YjZDNkdDZhFDZkN2YmRGZhhjZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
<a href="/go/1/6?postion=1" target="_blank">云数据库 mongodb 版</a>
基于飞天分布式系统和高性能存储,提供三节点副本集的高可用架构,容灾切换,故障迁移完全透明化。并提供专业的数据库在线扩容、备份回滚、性能优化等解决方案。
<a href="/go/1/6?postion=1" target="_blank">了解更多</a>
mongo shell 是 mongodb 的命令行管理工具,功能非常强大,最近社区很多人咨询的一些问题,比如
命令行看 json 格式比较吃力?
如何确定secondary节点同步是否跟上?
怎么查看db、集合使用了多少空间?
能否在shell 脚本里调用mongo shell
怎么执行 mongodb 命令,比如创建集合、索引?
......
上述问题都可以通过 mongo shell 来解决,而且mongo shell能做的远不止这些。
为了方便关系型数据库的的用户切换到 mongodb 上能快速上手,mongo shell里做了一些语法上的兼容(最终还是通过调用 mongodb 的命令实现的 ),例如
基本所有的driver都会实现一个通用的执行命令的接口,然后再封装出一些常用的接口(比如常用的crud操作),mongo shell 通过 runcommand 接口来实现执行命令,例如执行 serverstatus 命令
mongo shell也对很对很多常用的命令进行了封装,让用户使用起来更简单。
常见的封装接口包括
很多同学在使用 mongo shell时,觉得文档输出后可读性差,比如
实际上,mongo shell 可以对cursor的输出进行格式化(pretty)输出,json的文档会被格式化输出,可读性很强
mongo shell 里还可以通过 <code>printjson</code> 来格式化输出任意json对象,比如
mongo shell 除了支持交互式的调用方式,还能支持执行完一个或一批操作后自动退出,这样就能很方便的在shell 脚本里调用 mongo shell,比如获取 mongodb 各个命令备调用的次数。
如果要一次执行很多个 mongodb 的操作,可以将操作写到文件里,然后使用 mongo shell 批量执行
mongo shell 还提供『启动时执行脚本』的机制,类似与linux shell里的启动新的shell时,执行~/.bashrc等文件的机制。
只要将脚本写入 ~/.mongorc.js 文件里, mongo shell 启动时,就会先执行这个脚本,例如
上述的命令,并不需要去记忆,跟使用 linux shell 一样,需要用的时候看下 help 信息
除了上述功能,mongo shell 还提供了命令补全、命令历史等很多实用的功能,只要习惯了使用mongo shell,根本无需再使用图形界面来管理 mongodb;当然为了方便更多用户,阿里云 mongodb 云数据库 不仅支持通过mongo shell 及 其他第三方图形管理工具访问,还附带一个dms的数据库管理系统,供用户免费使用。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuIGMhZzM2UzYzMmZ2U2YjZDNkdDZhFDZkN2YmRGZhhjZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)