//
Mongo Shell小技巧
//
今天我们看看Mongo Shell的一些有意思的设置。
01
定制你自己的Mongo Shell提示
在MongoDB中,我们经常会和mongo shell打交道,通常情况下,我们不会修改mongo shell的配置,因为原生的配置已经足够我们应对日常中的问题了。
今天我们看一些有意思的现象。
1、配置行数
在mongo shell中配置当前shell的行数,可以记录本次登录一共执行了多少个命令,配置方法如下:
代码语言:javascript复制mongos> cmdCount = 1;
1
mongos> prompt = function() {
... return (cmdCount ) "> ";
... }
function () {
return (cmdCount ) "> ";
}
1> show databases;
admin 0.000GB
config 0.002GB
new 0.000GB
2> use admin
switched to db admin
3> show tables;
test1
4>
5>
6>
7>
8>
我们使用cmdCount自增的方式,来显示当前的命令是第几个命令。
2、配置db和端口信息。
有的时候,通过mongo shell进入了MongoDB之后,想要观察当前所在的db以及当前实例的端口信息,我们通常会通过db命令和db.serverStatus().host命令来看,这样可能不够直观,就可以设置为下面的模式:
代码语言:javascript复制mongos> host = db.serverStatus().host;
VM-0-14-centos:27016
mongos>
mongos> prompt = function() {
... return db "@" host "-----^_^----> ";
... }
function () {
return db "@" host "-----^_^----> ";
}
test@VM-0-14-centos:27016-----^_^---->
test@VM-0-14-centos:27016-----^_^---->
test@VM-0-14-centos:27016-----^_^---->
test@VM-0-14-centos:27016-----^_^---->
test@VM-0-14-centos:27016-----^_^---->
test@VM-0-14-centos:27016-----^_^----> show databases;
admin 0.000GB
config 0.002GB
new 0.000GB
test@VM-0-14-centos:27016-----^_^----> use admin
switched to db admin
admin@VM-0-14-centos:27016-----^_^---->
admin@VM-0-14-centos:27016-----^_^---->
admin@VM-0-14-centos:27016-----^_^---->
admin@VM-0-14-centos:27016-----^_^---->
可以看到,我们设置了一个笑脸的表情,^_^,从前缀的提示不难看出来,当前处于哪个db下,以及当前实例的端口信息等。
02
mongo shell引入vim工具
有时候我们想要输入或者修改一个函数,在Mongo Shell中直接编辑这个函数不是特别方便,这个时候,就可以在mongo shell中引入vim 工具,从而实现直接通过vim编辑函数的目的。
代码语言:javascript复制[root@VM-0-14-centos ~]# export EDITOR=vim
[root@VM-0-14-centos ~]# shard_login 27016
MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27016/?authSource=admin&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("88bc9be8-afc3-4f65-8763-dea7dd418250") }
MongoDB server version: 4.0.6
mongos> function myFunction () { }
mongos> edit myFunction
mongos> myFunction
function myFunction() {
print("hello world")
}
mongos> edit hello
mongos>
整个过程解释如下:
1、我们通过export导入vim为内置编辑器,
2、先定义一个myFunction的函数,
3、使用edit 函数名字来编辑这个函数,此时会自动打开一个文本,文本中的内容就是上面我们定义的函数内容。
4、编辑文本,补充内容,重新输入函数名称,发现函数已经变成我们编辑后的文本了。
注意,如果一个函数没有定义,就使用edit,则会新生成一个文件,这个文件里面写着undefined.编辑文本内容之后,会生成一个新的函数。
03
增加缓冲区大小
当一个表中的数据量很大的时候,缓冲区默认只保留20行数据,想继续看,必须输入it,很不方便,如下:
代码语言:javascript复制mongos> db.test.find()
{ "_id" : ObjectId("6006c46993a711b384cc8c92"), "number" : 1000 }
{ "_id" : ObjectId("6006c46993a711b384cc8c93"), "number" : 1001 }
{ "_id" : ObjectId("6006c46993a711b384cc8c94"), "number" : 1002 }
{ "_id" : ObjectId("6006c46993a711b384cc8c95"), "number" : 1003 }
{ "_id" : ObjectId("6006c46993a711b384cc8c96"), "number" : 1004 }
{ "_id" : ObjectId("6006c46993a711b384cc8c97"), "number" : 1005 }
{ "_id" : ObjectId("6006c46993a711b384cc8c98"), "number" : 1006 }
{ "_id" : ObjectId("6006c46993a711b384cc8c99"), "number" : 1007 }
{ "_id" : ObjectId("6006c46993a711b384cc8c9a"), "number" : 1008 }
{ "_id" : ObjectId("6006c46993a711b384cc8c9b"), "number" : 1009 }
{ "_id" : ObjectId("6006c46993a711b384cc8c9c"), "number" : 1010 }
{ "_id" : ObjectId("6006c46993a711b384cc8c9d"), "number" : 1011 }
{ "_id" : ObjectId("6006c46993a711b384cc8c9e"), "number" : 1012 }
{ "_id" : ObjectId("6006c46993a711b384cc8c9f"), "number" : 1013 }
{ "_id" : ObjectId("6006c46993a711b384cc8ca0"), "number" : 1014 }
{ "_id" : ObjectId("6006c46993a711b384cc8ca1"), "number" : 1015 }
{ "_id" : ObjectId("6006c46993a711b384cc8ca2"), "number" : 1016 }
{ "_id" : ObjectId("6006c46993a711b384cc8ca3"), "number" : 1017 }
{ "_id" : ObjectId("6006c46993a711b384cc8ca4"), "number" : 1018 }
{ "_id" : ObjectId("6006c46993a711b384cc8ca5"), "number" : 1019 }
Type "it" for more
其实我们可以通过设置参数来控制它输入的缓冲行数,例如:
代码语言:javascript复制mongos> DBQuery.shellBatchSize = 4;
4
mongos> db.test.find()
{ "_id" : ObjectId("6006c46993a711b384cc8c92"), "number" : 1000 }
{ "_id" : ObjectId("6006c46993a711b384cc8c93"), "number" : 1001 }
{ "_id" : ObjectId("6006c46993a711b384cc8c94"), "number" : 1002 }
{ "_id" : ObjectId("6006c46993a711b384cc8c95"), "number" : 1003 }
Type "it" for more
这样就可以将它设置成4行,当然,你可以可以往大的改。