日期:2014-05-16  浏览次数:20358 次

MongoDB的命令

?

命令

介绍

MongoDB数据库有一个数据库命令的概念(database command)。数据库命令让让数据库执行特殊操作的一个方法,或者请求目前操作的状态的信息。
发送到数据库的一个命令,实际上是对名称为$cmd的collection的一个查询。数据库命令的结果就是使用findOne()返回一个单独的document。

语法如下:

db.$cmd.findOne( { <commandname>: <value> [, options] } );

Shell环境提供了一个更为便捷的方法:

db.runCommand( { <commandname>: <value> [, options] } );

举个例子,我们要检查数据库的profile level设置,我们要进行如下的调用:

> db.runCommand({profile:-1});
{"was"
 : 0.0,"ok"
 : 1.0}

对于这么多的数据库命令,为了方便用户使用,一些驱动进行了进一步的封装。举个例子, ?mongo shell ? 提供了:

> db.getProfilingLevel()
0.0

让我们看看这个方法的源码:

> print( db.getProfilingLevel )
function () {    
var
 res = this
._dbCommand({profile:-1});    
return
 res ? res.was : null
;
}
> print( db._dbCommand )
function (cmdObj) {    
return
 this
.$cmd.findOne(cmdObj);
}

许多命令都有便捷的方法,更多详细的信息就要查看驱动的稳当了。

权限命令

某些操作仅仅是面向系统管理员的。这些权限命令只能面向于admin数据库。

> use admin;
> db.runCommand("shutdown"
); // shut down the database

如果db的变量的值不是admin。你可以使用_adminCommand来自动切换到适合的数据库。

> db._adminCommand("shutdown"
);

(对于这个命令,也有个便捷的方法,db.shutdownServer)

获取命令的帮助信息

在shell中调用 commandHelp 来获取一些命令的使用帮助。

> db.commandHelp("datasize"
)
help for
: datasize  example: 
{ datasize:"blog.posts"
, keyPattern:{x:1}, min:{x:10}, max:{x:55} }
NOTE: This command may take awhile to run

(目前为止,对于有些命令还没有帮助信息。。)