前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mongo Shell小技巧

Mongo Shell小技巧

作者头像
AsiaYe
发布2021-01-24 22:23:42
6250
发布2021-01-24 22:23:42
举报
文章被收录于专栏:DBA随笔DBA随笔

//

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,则会新生成一个文件,这个文件里面写着?developer/article/1778814/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行,当然,你可以可以往大的改。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-20,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com