我正在使用MongoDB本机Node.js驱动程序1.4.38。如何使用MongoDB本机Node.js驱动程序运行db.killOp()?
我有使用所有正在运行的操作:
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?
我认为,$ cmd.sys.killop上的findOne函数将获得记录。它将如何杀死手术?不明白。 – rajeshpanwar
与大多数mongo操作一样,查找和取消操作'db.currentOp()'和'db.killOp()'的方法通过访问底层系统集合'$ cmd.sys,使用有线协议操作进行函数调用。 inprog'和'$ cmd.sys.killop'分别与操作ID。因此,通过访问'db.collection('$ cmd.sys.killop')。findOne({'op':op.opid})''中的集合,调用将发出'db.killOp(op.opid) '命令。你真的先试过吗? – chridam
是的。我尝试过这个。 – rajeshpanwar