我正在使用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