配置mongo Shell

在本页面

[success] Note

下面的文档是MongoDB服务器下载.中包含的mongo shell。有关新的MongoDB Shell ,mongosh的信息,请参考mongosh文档

要了解这两种shell的区别,请参阅Comparison of the mongo Shell and mongosh.

自定义提示

您可以通过在 mongo shell中设置变量prompt来修改提示符的内容。prompt变量可以保存字符串和JavaScript代码。如果prompt包含一个返回字符串的函数,mongo 可以在每个提示符中显示动态信息。

您可以在.mongorc.js 文件中添加提示逻辑,以在每次启动mongo shell时设置提示。

自定义提示以显示操作数

例如,要使用当前会话中发出的操作数创建mongo shell提示,请在mongo shell中定义以下变量:

cmdCount = 1;
prompt = function() {
return (cmdCount++) + "> ";
}

提示将展示类似于以下内容:

1>
2>
3>

自定义提示以显示数据库和主机名

要以<database> @ <hostname> $的形式创建mongo shell`提示,请定义以下变量:

host = db.serverStatus().host;
prompt = function() {
return db+"@"+host+"$ ";
}

提示将类似于以下内容:

自定义提示以显示时间和文档计数

要创建一个包含系统正常运行时间和当前数据库中文档数的mongo shell提示,请在mongo shell中定义以下提示变量:

prompt = function(){
return "Uptime:"+db.serverStatus().uptime+" Documents:"+db.stats().objects+" > "; }

提示符将类似于以下内容:

Uptime:5897 Documents:6 >

在mongo shell中使用外部编辑器

您可以通过在启动mongo shell之前设置EDITOR 环境变量,这样就可以在 mongo shell中使用自己的编辑器。

export EDITOR=vim
mongo

进入mongo shell后,您可以通过输入edit <variable>edit <function>使用指定的编辑器进行编辑,如以下示例所示: 1.定义一个函数myFunction

function myFunction () { }

2.使用编辑器编辑函数:

edit myFunction

该命令将打开vim编辑会话。 完成编辑后,保存并退出vim编辑会话。 3.在mongo shell中,键入myFunction以查看函数定义:

myFunction

展示的是已经保存编辑后的结果:

function myFunction() {
print("This was edited");
}

[success] Note

当mongo shell解释在外部编辑器中编辑的代码时,它可能会修改函数中的代码,具体取决于JavaScript编译器。 例如,mongo可以将1 + 1转换为2或删除注释。 实际更改仅影响代码的外观,并且会根据所使用的JavaScript版本而有所不同,但不会影响代码的语义。

改变mongo shell(batchSize)

db.collection.find()方法是用于从集合中检索文档的JavaScript方法。db.collection.find()方法将游标返回到结果。 但是,在mongo shell中,如果未使用var关键字将返回的游标分配给变量,则该游标会自动迭代最多20次,来打印与查询匹配的前20个文档。 mongo shell将提示 输入it以使其再次迭代20次。 您可以设置DBQuery.shellBatchSize属性,以更改文档数默认值20,如以下示例中将其设置为10

DBQuery.shellBatchSize = 10;

译者:王恒 金江

校对:杨帅