1

I am using this dependency.

        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver</artifactId>
            <version>3.12.2</version>
        </dependency>

Package:

package com.mongodb.MongoClient;

How can I get collection by name then get its status so that the following information will be available:

  1. size
  2. storageSize

Collection Status

It seems that the answer for this How to call db.Collection.stats() from Mongo java driver uses deprecated class package com.mongodb;

        // Mongodb initialization parameters.
        int port_no = 27017;
        String auth_user="jcg", auth_pwd = "admin@123", host_name = "localhost", db_name = "mongoauthdemo", db_col_name = "emp", encoded_pwd = "";

        /* Imp. Note -
         *      1.  Developers will need to encode the 'auth_user' or the 'auth_pwd' string if it contains the <code>:</code> or the <code>@</code> symbol. If not, the code will throw the <code>java.lang.IllegalArgumentException</code>.
         *      2.  If the 'auth_user' or the 'auth_pwd' string does not contain the <code>:</code> or the <code>@</code> symbol, we can skip the encoding step.
         */
        try {
            encoded_pwd = URLEncoder.encode(auth_pwd, "UTF-8");
        } catch (UnsupportedEncodingException ex) {
            log.error(ex);
        }

        // Mongodb connection string.
        String client_url = "mongodb://" + auth_user + ":" + encoded_pwd + "@" + host_name + ":" + port_no + "/" + db_name;
        MongoClientURI uri = new MongoClientURI(client_url);

        // Connecting to the mongodb server using the given client uri.
        MongoClient mongo_client = new MongoClient(uri);

        // Fetching the database from the mongodb.
        MongoDatabase db = mongo_client.getDatabase(db_name);

        // Fetching the collection from the mongodb.
        MongoCollection<Document> coll = db.getCollection(db_col_name);

1 Answer 1

2

This is using the MongoDB Java driver version 3.12:

try(MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017/")) {

    MongoDatabase db = mongoClient.getDatabase("test");
    Document collStatsResults = db.runCommand(new Document("collStats", "myCollection"));
    System.out.println(collStatsResults.get("size"));
    System.out.println(collStatsResults.get("storageSize"));
}

Note the usage of the try-with-resources clause; it closes the MongoClient object after its use to release the connection related resources.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

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.