web-dev-qa-db-ja.com

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}クエリドキュメントを指定して、アイドル接続の操作やシステム操作など、進行中のすべての操作に関する情報を返すこともできます。クエリドキュメントに '$ all':trueと他のクエリ条件が含まれている場合、 '$ all':trueのみが適用されます。

このコマンドdb.command("currentOp(true)");を使用しているときに、次のような例外が発生します。

"ok":0.0、 "errmsg": "そのようなコマンドはありません: 'currentOp(true)'、bad cmd: '{currentOp(true):true}'"、 "code":59}

2
Velkumar

代わりにこれを試してください:

db.command("currentOp({$all: true})");

私はこれのJSバージョンをテストしました(Java atmをテストするように設定していない))が機能しました。これを行う方法の例を探している場合は、 Javaこの例では、ヘルパーではなく)実際のメソッド 、デフォルトの 行4 と「すべて」を比較- 行49

1
Adam C

私は 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のために働きます

1