使用Mongo Java客户端获取mongo复制信息

时间:2019-06-05 15:57:48

标签: java mongodb mongodb-replica-set

我正在获取有关我的mongo应用程序的指标,并希望使用Mongo Java客户端来获取复制操作日志指标。

从终端上的printReplicationInfo()命令提供所需的信息。但是,我找不到从Mongo Java客户端获取相同数据的功能。

一些旧页面声称这是通过Java客户端无法实现的,想知道新客户端是否具有任何此类选项。任何帮助,我们将不胜感激。

更新:感谢您的建议,这是我尝试获取oplog窗口信息:

        DB db = mongoClient.getDB("local");
        DBCollection collection = db.getCollection("oplog.rs");
        List<DBObject> dbObjects = collection.find().sort(new 
        BasicDBObject("ts",-1)).toArray();
        DBObject startEntry = dbObjects.get(0);
        DBObject lastEntry = dbObjects.get(dbObjects.size()-1);
        String startTime = (String)startEntry.get("ts");
        String endTime = (String)lastEntry.get("ts");
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("yyyy.MM.dd");
        Date startDate = simpleDateFormat.parse(startTime);
        Date endDate = simpleDateFormat.parse(endTime);
        long diff = endDate.getTime() - startDate.getTime();

1 个答案:

答案 0 :(得分:0)

您可以尝试一下,

DB db = mongoClient.getDatabase("local");
DBObject cmd = new BasicDBObject();
cmd.put("getReplicationInfo", 1);
CommandResult result = db.command(cmd);

或者在较新的API版本中,使用Document类来自软件包org.bson

DB db = mongoClient.getDatabase("admin");
Document documentA = db.runCommand(new Document("getReplicationInfo",1));