如何使用 API 執行 Mongo 數據庫 db.currentOp(true) 命令
使用 Mongo Java API,我可以像這樣執行 currentOp() 命令:
MongoClient mongoClient = null; mongoClient = new MongoClient( "127.0.0.1", 27017); db = mongoClient.getDB("admin"); db.command("currentOp");
但我只得到目前操作的詳細資訊。我也需要獲取空閒連接的詳細資訊。
參考此
https://docs.mongodb.com/v3.0/reference/method/db.currentOp/#currentop-examples
行為
如果將 true 傳遞給 db.currentOp(),則該方法會返回有關所有操作的資訊,包括對空閒連接的操作和系統操作。
db.currentOp(true) 傳入true相當於傳入一個查詢文件{ ‘$all’: true }。
如果將查詢文件傳遞給 db.currentOp(),則輸出僅返回與查詢匹配的目前操作的資訊。您可以查詢輸出欄位。請參閱範例。
您還可以指定 { ’ $ all’: true } query document to return information on all in-progress operations, including operations on idle connections and system operations. If the query document includes ’ $ all’: true 以及其他查詢條件,只有 ‘$all’: true 適用。
使用此命令
db.command("currentOp(true)");
時,我收到如下異常:“ok”:0.0,“errmsg”:“沒有這樣的命令:‘currentOp(true)’,錯誤的 cmd:’{ currentOp(true):true }’”,“code”:59}
試試這個:
db.command("currentOp({$all: true})");
我已經測試了這個的 JS 版本(沒有設置 Java 來測試 atm)並且它有效。如果您正在尋找如何執行此操作的範例,您可以在此範例中查看 Java 中的實際方法(而不是幫助程序),將第43 行的預設值與第 49行的“全部”進行比較
我要求我們的MongoDB 團隊快速瀏覽一下,因為現在是星期五,快到假期了。這是他們的建議,希望對您有所幫助:
public static void main(String[] args) { MongoClient mongoClient = new MongoClient("192.168.88.11"); MongoDatabase database = mongoClient.getDatabase("admin"); Document currentOpResults = database.runCommand(new Document("currentOp", 1)).append("$all", true); System.out.println(currentOpResults.toJson()); }
給出輸出:
{ "inprog" : [{ "desc" : "conn1055", "threadId" : "139685894772480", "connectionId" : 1055, "client" : "192.168.88.102:57119", "active" : true, "opid" : 7664, "secs_running" : 0, "microsecs_running" : { "$numberLong" : "31" }, "op" : "command", "ns" : "admin.$cmd", "query" : { "currentOp" : 1 }, "numYields" : 0, "locks" : { }, "waitingForLock" : false, "lockStats" : { } }], "ok" : 1.0, "$all" : true }
程式碼片段:
/* * using latest driver available at https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongo-java-driver/3.6.0/ * mongodb 3.4.1 */ package javaapplication1; import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class JavaApplication1 { public static void main(String[] args) { MongoClient mongoClient = new MongoClient(“servername.domain.com”); MongoDatabase database = mongoClient.getDatabase(“admin”); Document currentOpResults = database.runCommand(new Document(“currentOp”, 1)).append(“$all”, true); System.out.println(currentOpResults.toJson()); } }
有關資訊,我為Percona工作