2

Using the Mongo Java API I can run the currentOp() command like this:

MongoClient mongoClient = null;
mongoClient = new MongoClient( "127.0.0.1", 27017);
db = mongoClient.getDB("admin");
db.command("currentOp");

But I only get details of current operations. I need to get details of idle connections too.

With reference with this
https://docs.mongodb.com/v3.0/reference/method/db.currentOp/#currentop-examples

Behavior

If you pass in true to db.currentOp(), the method returns information on all operations, including operations on idle connections and system operations.

db.currentOp(true) Passing in true is equivalent to passing in a query document of { '$all': true }.

If you pass a query document to db.currentOp(), the output returns information only for the current operations that match the query. You can query on the Output Fields. See Examples.

You can also specify { '$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 as well as other query conditions, only the '$all': true applies.

While using this command db.command("currentOp(true)");, I get an exception like this:

"ok" : 0.0 , "errmsg" : "no such command: 'currentOp(true)', bad cmd: '{ currentOp(true): true }'" , "code" : 59}

asked Mar 9, 2017 at 7:30
0

2 Answers 2

1

Try this instead:

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

I've tested the JS version of this (don't have Java set up to test atm) and it worked. If you are looking for an example of how to do this, you can see the actual methods (rather than helpers) in Java in this example, compare the default on line 43 with "all" on line 49

answered Mar 10, 2017 at 13:32
1

I asked our MongoDB team to have a quick look seeing as it is Friday and nearly holidays. Here's their suggestion, hope it helps:

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());
 }

Gives output:

{ "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 }

Code snippet:

/*
* 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());
 }
}

For info, I work for Percona

answered Dec 15, 2017 at 14:20
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.