如何使用MongoDB本地Node.js驱动程序运行db.currentOp()?

我似乎无法find使用Node.js中的mongodb模块检索数据库当前操作信息的方法。

我试过这样的事情:

mongodb = require 'mongodb' server = new mongodb.Server 'localhost', 27017 connector = new mongodb.Db 'test', server connector.open (err, db) -> if not err? db.admin().command {currentOp: 1}, (err, doc) -> if not err? console.log doc 

当然没有任何结果。

有人有指针吗?

直接从节点mongodb本地驱动程序执行此操作的方法:

 var MongoClient = require('mongodb').MongoClient; MongoClient.connect('mongodb://127.0.0.1:27017/', function (err, db) { if (err) { throw err; } db.collection('$cmd.sys.inprog').findOne(function (err, data) { if (err) { throw err; } console.log(data.inprog); }); }); 

虽然它是一个shell命令,但它不是一个真正的命令。 相反,您需要使用findOne()来查询$cmd.sys.inprog集合。 在MongoDB shell中,你可以这样做:

 db.$cmd.sys.inprog.findOne(); 

您将要在MongoDB 3.2上使用currentOp命令(详情请参阅db.currentOp的shell定义)。

db.eval("return db.currentOp()",function (err, data) { console.log('currentOp',err,data); });

这似乎工作,无视Node.js的MongoDB本地驱动程序。

 exec = require('child_process').exec exec '/usr/bin/mongo --quiet --host="localhost:27017" "test" --eval "printjson(db.currentOp())"', (err, stdout) -> console.error "#{err.message}" if err? console.log JSON.parse stdout 

这个function不应该在驱动程序中实现吗?