十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

MongoDB1.9.1新功能预告:提示符小优化PS1++

上一篇 / 下一篇  2011-07-01 13:07:20 / 个人分类:mongodb

51Testing软件测试网+I,`)F#q r+A;^ q$} Uq

Shell命令行中,我们大概都知道PS1这个变量的意义,通过修改PS1的值,你可以自由定义你的终端提示符。而在MongoDB的mongo客户端命令行中,也将加入这样的功能,而且更强大,让你的运维管理工作更方便。

c2k JSbg&F:S0

,^)D ]` YX4D!f0最初MongoDB的命令行提示符是简单的”>”,如下51Testing软件测试网5iot hg

>
51Testing软件测试网#^ jbk"cz

后来在最近的版本中,我们看到对Replica Sets的连接提示符做了有意义的变更,像这样51Testing软件测试网*H}'{T r'b

myReplSetName:SECONDARY>

%f+aD:o2jM0但是我们其实还可以做到更定制化一些,就像Shell环境中的PS1变量一样。嗯,这就是在1.9.1中将出现的一个小功能,MongoDB的核心开发工程师kristina刚刚发了一篇博文,描述了其将在提示符上会进行的改进,并将其称为PS1++,也就是说会比PS1更强大,更具定制化。

f"j^\:x051Testing软件测试网u4asm3d{

下面我们就来看一下会有哪些定制化的功能吧

s1N%v,f_5A1i0

.]?p+W(d7U9`M0简单的字符串定义51Testing软件测试网f~;wu`$M8m'[

myReplSetName:SECONDARY> prompt = "> "
i? vOfo2H0>
;LV~0Z8V,T K IF0> // ah, bliss
4{-x o'Q1vV0J.aV0>51Testing软件测试网0u:N SZ7a@Lm
> // some sysadmins think > is a weird prompt, as it's also51Testing软件测试网Lr)M5pk2zX
> // used for redirections, so they might prefer $
w!_v?%V2e0> prompt = "$ "51Testing软件测试网y k&Dyl,gE}k
$
1{E%d`8U s0$ // there we go

1QG7gQESX0函数式定义

5n T[{t1P4k8h0
> prompt = function() { return db+"> "; }51Testing软件测试网
I1Iae)xz
test> use foo
%`L |,pCPdAl0foo> use bar51Testing软件测试网iY5J(ov*Q(d2eELF"]
bar>
51Testing软件测试网1N U l-]H/E s

更复杂的函数

7U&V`$r$L0
> states = ["STARTUP", "PRIMARY", "SECONDARY", "RECOVERING", "FATAL",51Testing软件测试网cB4KSv
... "STARTUP2", "UNKNOWN", "ARBITER", "DOWN", "ROLLBACK"]
ZL ~^/s8V}6iJ2mN0>
B!bk5H7A'H0> prompt = function() {51Testing软件测试网'N"a7dQ4zHS^|
... result = db.isMaster();51Testing软件测试网`-ZW0L&s.I?Ek
... if (result.ismaster) {
*s}B-Y#Ke,M0... return db+"> ";51Testing软件测试网MR%M W;Tx+Ys
... }
+NZy:['i%z#p0... else if (result.secondary) {
XE+Hu:K&OQ0[!Ov;|0... return "("+db+")> ";51Testing软件测试网t*mrL2T1J| e
... }
-izR o&rX6D&UU0... result = db.adminCommand({replSetGetStatus : 1})
Xx/{.BA? M0... return states[result.myState]+":"+db+"> ";
$c-x+N#zyZeq)S2oO0... }
-\9M[J#d%cQm f0(test)>

%X_4X ?*`N0G_4I5u0告诉你是否连接的是mongos机器

(n'o f+Ua&vm0
> prompt = function() {51Testing软件测试网%G2ihE!V
... result = db.adminCommand({isdbgrid : 1});51Testing软件测试网!D%C2fE*[+K0k K7V}&@;V
... if (result.ok == 1) {51Testing软件测试网5|Hg \ j
... return "mongos> ";51Testing软件测试网V? SW `zi2RX@(x
... }
'f(| HnH$n&i2Vw0... return "> ";51Testing软件测试网|xd^Q-XR-ey
... }

`RTle,D]w2\0告诉你当前的时间51Testing软件测试网8Umrq/UGdP

> prompt = function() {51Testing软件测试网3Ap_q	s
... var now = new Date();51Testing软件测试网 B5kqs1NbT
... return now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+"> ";
2UMj M6N%k z0... }51Testing软件测试网v*\|D:I1V2tD
10:30:45> db.foo.count()51Testing软件测试网&bX9? G h mZY.g6z
6000051Testing软件测试网;W#P2^.Y+ru.Z%Z,|TM
10:30:46>
51Testing软件测试网+A;z\S(J;FG1_

还可以定义在配置文件里51Testing软件测试网/]]#\%B&J/XD

$ # load from command line arg:
9b%cox2A%?,_/t0$ mongo shellConfig.js
q&ql h9IfO,X0MongoDB shell version 1.9.1-
S2x8K_4M0connecting to: test51Testing软件测试网S3U-SFrfZ]7B
>51Testing软件测试网,A\ h kK V
> // load from the shell itself51Testing软件测试网fh3U%OI0q"h
> load("/path/to/my/shellConfig.js")

I/[0TO z z-VO0另一个新功能是自动加载的配置文件,类似于.bashrc,这个文件会叫.mongorc.js

bpO*X8AO3AE051Testing软件测试网 h-{;X,GXZ/sUg

你可以写你想在连接时执行的内容51Testing软件测试网 X;T9a"T6^l8zx1l

// my startup file
^/V4PBj)X051Testing软件测试网L ^$TEiI
prompt = /* ... */
T!h @7uW:?,~P0
9S:q@K]|z0// getting "not master and slaveok=false" errors drives me nuts,51Testing软件测试网1f&II)T+q0e V,`
// so I'm overriding the getDB() code to ALWAYS set slaveok=true
J$s'C~b7p0Mongo.prototype.getDB = function(name) {51Testing软件测试网#} b0}dq
this.setSlaveOk();51Testing软件测试网8eJ0cFXH7X}
return new DB(this, name);
vZ/?C1p8wv`A.I|0}51Testing软件测试网/n6Q o3X7Mt/Y6c
51Testing软件测试网ulq8KO? e0S
/* and so on... */
51Testing软件测试网.A\g6}*dpLe#I

来源:www.snailinaturtleneck.com

:d&~as/Z$Ur&jJl0

TAG: MongoDB mongodb mongoDB

 

评分:0

我来说两句

Open Toolbar