如何在MongoDB中获取连接的客户端

ita*_*ied 11 database mongodb

我正在编写一个使用mongo作为其数据库的应用程序.我想打印连接到db的客户端,例如,打印他们的ip.我怎样才能获得这些信息?

我试过用

db.serverStatus().connections
Run Code Online (Sandbox Code Playgroud)

但它给了我访问我的数据库的计算机数量.

Joh*_*one 13

您应该能够运行此命令并获取已连接IP地址的列表:

db.currentOp(true).inprog.forEach(function(d){if (d.client)printjson(d.client)})
Run Code Online (Sandbox Code Playgroud)

db.currentOp实际上构建在特殊集合$ cmd.sys.inprog之上,因此您也可以直接查询它.您可以通过在没有括号的db.currentOp中键入mongo shell来了解如何执行此操作,它将打印出该函数的源:

> 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 );
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*erg 9

您可以使用该字段使用db.currentOp(true)并迭代inprog结果集的数组client.