1、通过eval参数执行指定语句
比如,需要查询test库的t1表中的记录数有多少,常用方法如下:
[[email protected] bin]# ./mongo test
MongoDB shell version: 2.6.6
connecting to: test
> db.t1.count();
0
>
通过命令行eval参数直接执行语句:
[[email protected] bin]# ./mongo test --eval "printjson(db.t1.count())"
MongoDB shell version: 2.6.6
connecting to: test
0
2、执行指定文件中的内容
如果涉及到很多操作后,才能得到结果,那么用eval的方式来做的话是不可能完成的,那么更灵活的执行文件的方式就派上用场了,比如我们仍然要查看test库t1表中的记录数:
t1_count.js就是我们要指定的文件,里面的内容如下:
var totalcount=db.t1.count();
printjson(‘Total count of t1 is:‘+totalcount);
printjson(‘--------------------‘);
下面我们将执行这个文件:
[[email protected] bin]# ./mongo t1_count.js
MongoDB shell version: 2.6.6
connecting to: test
"Total count of t1 is:0"
"--------------------"
大家可以看到最终t1表中的记录数为7,那么一些不必要的说明性文字我们要是不希望出现该怎么办呢?
[[email protected] bin]# ./mongo
--quiet t1_count.js
"Total count of t1 is:0"
"--------------------"
[[email protected] bin]#
通过指定quiet参数,即可以将一些登录信息屏蔽掉,这样可以让结果更加清晰。
3、进程控制
要解决系统的性能问题,此时一般的操作习惯是先查看有哪些进程,然后将异常的进程杀掉,那么MongoDB是怎么处理的呢?
查看活动进程
查看活动进程,便于了解系统正在做什么,以便做下一步的判断:
>db.currentOp();
{inporg:[{"opid":18,"op":"query","ns":"mydb.votes","query":"{score:1.0}","inLock":1}]
}
字段说明:
- Opid:操作进程号
- Op:操作类型(查询、更新等)
- Ns:命名空间,指操作的是哪个对象
- Query:如果操作类型是查询的话,这里将显示具体的查询内容
- lockType:锁的类型,指明是读锁还是写锁。
结束进程
如果某个异常是由于某个进程产生的,那么一般都会毫不留情的杀掉这个进程,下面将是这个操作
>db.killOp(1234/*opid*/)
注意:
不要kill内部发起的操作,比如说replica set发起的sync操作等。
----------------------MongoDB系列文章更新--------------------------------
第二部分 应用篇 第七章 MongoDB MapReduce
第三部分 管理篇 第九章 MongoDB shell之系统命令、用户命令