**
**
我们知道在Mongodb中findOne是有格式化输出的,而find没有,但是通过一些设置或者操作,我们也可以让find来实现格式化输出。
最简单的例子是在每次find后加上pretty()
db.blog.find({"_id" : ObjectId("55814703e6c873d825fdcc1a")})
{ "_id" : ObjectId("55814703e6c873d825fdcc1a"), "content" : "...", "conments" : [ { "author" : "joe", "score" : 3, "comment" : "nice post" }, { "author" : "joe", "score" : 6, "comment" : "terrible post" } ] }
>
>
>#加了pretty()之后就有格式化输出了
> db.blog.find({"_id" : ObjectId("55814703e6c873d825fdcc1a")}).pretty()
{
"_id" : ObjectId("55814703e6c873d825fdcc1a"),
"content" : "...",
"conments" : [
{
"author" : "joe",
"score" : 3,
"comment" : "nice post"
},
{
"author" : "joe",
"score" : 6,
"comment" : "terrible post"
}
]
}
或者也在在Mongodb的shell中设置
DBQuery.prototype._prettyShell = true
那么在本shell中的所有find都是有格式的。
一劳永逸的方法就是把这条命令写入到~/.mongorc.js
**
**
每次在启动Mongo的客户端的时候,都会加载~/.mongorc.js文件,所以有些常用的函数或者设置可以写到这个文件中。
除了上文说到的
DBQuery.prototype._prettyShell = true
设置外还有
EDITOR=”/usr/bin/vim”
或者
EDITOR=”/usr/bin/emacs”
因为Mongo的shell中不可以编辑之前的行,为了方便的调用编辑器,可以再shell中设置EDITOR变量。
举个栗子:
> var t = 123;
> print(t)
123
> #如果在这里发现t变量有错,那么可以再次编辑
> edit t
> #输入edit t后,会打开vim并写显示t的值,编辑完成后,保存退出,变量自动保存
> print(t)
234
另外我在我的Mongo shell中增加了时间显示和数据库标示:
18:48:43 test>
test为当前连接的db名字
做法就是在文件中增加两个函数
prompt=function(){
var d = new Date();
var t = enrichTime(d.getHours()) + ":" + enrichTime(d.getMinutes()) + ":" + enrichTime(d.getSeconds());
if (typeof db == 'undefined') {
return t + " (nodb)> ";
}
try {
db.runCommand({getLastError:1});
}
catch (e) {
print(e)
}
return t + " " + db + "> ";
};
#避免出现18:2:2 这样的情况
function enrichTime(i)
{
if (i<10)
{
i = "0" + i;
}
return i;
}
如果不想加载这个文件,可以用–norc启动即可
./bin/mongo --norc
**
**
参考网址
1.可以通过发送kill -SIGUSR1 来分割日志
立即生效
例如:
[19:01:30 fifi@CentOS6 log]$ ps xf
PID TTY STAT TIME COMMAND
1345 ? S 0:03 sshd: fifi@pts/0,pts/1
1346 pts/0 Ss 0:00 \_ -bash
1816 pts/0 Sl+ 0:00 | \_ ./bin/mongo
1678 pts/1 Ss 0:00 \_ -bash
1851 pts/1 R+ 0:00 \_ ps xf
1505 ? Rl 1:15 ./bin/mongod -f mongodb.conf
[19:01:31 fifi@CentOS6 log]$ ll
total 8
-rw-rw-r--. 1 fifi fifi 822 Jun 17 19:01 mongo.log
[19:01:36 fifi@CentOS6 log]$ pwd
/home/fifi/Mongodb/log
[19:01:38 fifi@CentOS6 log]$ kill -SIGUSR1 1505
[19:01:42 fifi@CentOS6 log]$ ll
total 12
-rw-rw-r--. 1 fifi fifi 822 Jun 17 19:01 mongo.log
-rw-rw-r--. 1 fifi fifi 822 Jun 17 19:01 mongo.log.2015-06-17T11-01-42
2.mongo logRotate 命令方法
use admin
db.runCommand( { logRotate : 1 } )
需要在mongos,mongod,config server运行。
效果一样。
3.友情提醒:
如果你手动mv或者rm掉mongodb的log,让程序找不到日志文件了,哪怕再恢复一个原来文件名的文件,日志不会再写入了。这时候只能重启mongod服务了。
但是,如果你用>mongodb.log命令来清空日志文件,就不会出现这样的问题。
**
**