Mongo Shell小技巧

2021-01-24 22:23:42 浏览数 (1)

//

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行,当然,你可以可以往大的改。

0 人点赞