如何使用 MongoDB 原生 Node.js 驱动程序运行 db.killOp()?

2023-12-12

我正在使用 MongoDB 本机 Node.js 驱动程序 1.4.38。

我已经使用以下命令进行了所有正在运行的操作:

var maxSecsRunning = 2;
db.collection('$cmd.sys.inprog').findOne(function (err, data) {
                if (err) {
                    throw err;
                }
                if (data && data.inprog) {
                    data.inprog.forEach(function (op) {
                        console.log("Record", op);

                        if (op.secs_running > maxSecsRunning && op.op == "query" && !op.ns.indexOf("local") > -1) {
                            console.log("Killing opId: " + op.opid + " running for over secs: " + op.secs_running);
                            db.killOp(op.opid);


                        }

                    })
                }


            });

我想终止长时间运行的操作,但 db.killOp 给出错误:未定义不是函数。

如何在node.js MongoDB本机驱动程序中运行killOp?


从 MongoDB 3.2 开始,接受的答案将不再有效,因为系统集合不再公开。

相反,您有一个用于此操作的命令哈希。这对我有用:

db.command({currentOp:1})
                .then( result => {
                    if( result && result.inprog ) {
                        result.inprog.forEach( item =>
                        {
                            if( // some condition 
                              ) {
                                  db.command( {killOp: 1, op: item.opid} );
                            }
                        });
                    }
                } )
                .catch( err => {
                    // don't forget to handle errors.
                       );  }  );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 MongoDB 原生 Node.js 驱动程序运行 db.killOp()? 的相关文章

随机推荐