我有一个mongo数据库实例,我想让所有客户端都连接到它。我在mongo shell中写

db.currentOp(true)


我得到了所有的客户及其财产。
如何在Java中提取数据?

我尝试了类似的方法,但是没有用:

mongoclient.getDB("local").command("currentOp")


它说没有这样的命令。

最佳答案

看来currentOp是外壳程序上的命令,但不是所有驱动程序都支持的一流的mongodb命令。您将需要使用$cmd.sys.inprog查询findOne()集合。使用java驱动程序,您可以执行以下操作(这正是currentOp在后台进行的调用):

DB db = mongoclient.getDB("local");
DBObject currentOp = db.getCollection("$cmd.sys.inprog").findOne();


如果您在调用currentOp时了解幕后情况,那么您会发现:

> db.currentOp
function ( arg ){
    var q = {}
    if ( arg ) {
        if ( typeof( arg ) == "object" )
            Object.extend( q , arg );
        else if ( arg )
            q["$all"] = true;
    }
    return this.$cmd.sys.inprog.findOne( q );
}
>

07-26 08:37