如何使用nodejs驱动程序在mongodb中获取当前操作

时间:2017-05-20 05:04:11

标签: javascript node.js mongodb

我使用节点js作为前端,mongodb作为后端。我得到了成功的联系。但是当试图让所有进程在mongodb中运行时抛出错误。我的代码如下。

var Db = require('mongodb').Db, Server = require('mongodb').Server;
        var db = new Db('admin', new Server(conf.host, conf.port));
        db.open(function(err, db1) {
            var adminDb = db1.admin();
            adminDb.authenticate(conf.user, conf.password, function(err, result) {
                if(result == true) {
                     var obj = adminDb.currentOp({"active":true});
                     console.log("output="+output);
                }

            });
    });

我收到以下错误。

  

TypeError:adminDb.currentOp不是函数

1 个答案:

答案 0 :(得分:1)

您想要.command()

   adminDb.command({ "currentOp": 1, "active": true },function(err,result) {
       // code in here
   });

如果你一直在寻找“实际”执行的方式,那么进入mongo shell并输入最后没有()括号的函数。这将显示定义。

I.E代表currentOp()

> db.currentOp

function (arg) {
        var q = {};
        if (arg) {
            if (typeof(arg) == "object")
                Object.extend(q, arg);
            else if (arg)
                q["$all"] = true;
        }

        var commandObj = {"currentOp": 1};
        Object.extend(commandObj, q);
        var res = this.adminCommand(commandObj);
        if (commandUnsupported(res)) {
            // always send legacy currentOp with default (null) read preference (SERVER-17951)
            var _readPref = this.getMongo().getReadPrefMode();
            try {
                this.getMongo().setReadPref(null);
                res = this.getSiblingDB("admin").$cmd.sys.inprog.findOne(q);
            } finally {
                this.getMongo().setReadPref(_readPref);
            }
        }
        return res;
    }