我正在使用 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(使用前将#替换为@)