如何配置mongosh使其输出格式与旧版mongo shell完全一致?
解决mongosh与旧版mongo输出兼容的配置方法
1. 移除提示符并统一基础输出格式
mongosh默认的提示符是脚本兼容的核心障碍,可通过两种方式处理:
- 临时生效:启动时添加参数
mongosh --no-prompt --quiet--no-prompt:彻底关闭提示符输出--quiet:禁用额外日志信息,仅保留命令执行结果
- 持久生效:在用户级配置文件
~/.mongoshrc.js或系统级/etc/mongoshrc.js中添加:// 清空提示符 prompt = () => ''; // 关闭冗余输出项 config.set('enableTelemetry', false); config.set('showStackTraces', false);
2. 统一show dbs的存储单位为GB
mongosh默认用KiB显示数据库大小,可通过重写命令实现旧版GB单位输出:
在.mongoshrc.js中添加:
// 重写show dbs命令,输出GB格式 show = { dbs: function() { const dbs = db.adminCommand('listDatabases').databases; dbs.forEach(db => { // 字节转GB(1GB = 1024^3字节) const sizeGB = (db.sizeOnDisk / (1024 ** 3)).toFixed(2); print(`${db.name}\t${sizeGB}GB`); }); } };
执行show dbs后,输出格式将与旧版mongo完全一致。
3. 统一db.dropDatabase()的返回格式
mongosh执行该命令会返回含dropped字段的对象,可重写方法匹配旧版输出:
在.mongoshrc.js中添加:
// 重写dropDatabase方法,返回旧版{ "ok" : 1 }格式 db.dropDatabase = function() { const result = this._dropDatabase(); return { ok: result.ok }; };
4. 全局兼容的启动方式
如果不想每次启动都手动加参数,可创建兼容脚本mongo-compat.sh:
#!/bin/bash mongosh --no-prompt --quiet "$@"
赋予执行权限:chmod +x mongo-compat.sh,之后用该脚本替代原mongo命令执行旧脚本即可。
内容的提问来源于stack exchange,提问作者fgalan
相关产品推荐
相关产品推荐

