首页 > 代码库 > 第三部分 管理篇 第九章 MongoDB shell之eval、进程

第三部分 管理篇 第九章 MongoDB shell之eval、进程

1、通过eval参数执行指定语句

比如,需要查询test库的t1表中的记录数有多少,常用方法如下:

[root@localhost bin]# ./mongo test
MongoDB shell version: 2.6.6
connecting to: test
> db.t1.count();
0

通过命令行eval参数直接执行语句:

[root@localhost 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(‘--------------------‘);

下面我们将执行这个文件:

[root@localhost bin]# ./mongo t1_count.js 
MongoDB shell version: 2.6.6
connecting to: test
"Total count of t1 is:0"
"--------------------"

大家可以看到最终t1表中的记录数为7,那么一些不必要的说明性文字我们要是不希望出现该怎么办呢?

[root@localhost bin]# ./mongo --quiet t1_count.js
"Total count of t1 is:0"
"--------------------"
[root@localhost 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

第一部分 基础篇 第二章 安装MongoDB

第一部分 基础篇 第三章 MongoDB体系结构

第一部分 基础篇 第四章 MongoDB快速入门

第一部分 基础篇 第四章 MongoDB查询

第二部分 应用篇 第五章 MongoDB高级查询

第二部分 应用篇 第六章 MongoDB GridFS

第二部分 应用篇 第七章 MongoDB MapReduce

第三部分 管理篇 第八章 MongoDB服务管理

第三部分 管理篇 第九章 MongoDB shell之系统命令、用户命令







第三部分 管理篇 第九章 MongoDB shell之eval、进程