如何从Mongo Java驱动程序中调用db.Collection.stats()函数

4
从Mongodb客户端,我们可以使用db.Collection.stats()获取集合的状态,例如:
+ 记录数量(count)
+ 磁盘上的大小(storageSize)
+ 索引(indexSizes)
+ 平均对象大小(avgObjSize)
现在我想通过Mongodb Java驱动程序从Web后端监视这些数据,请告诉我如何获取它们?
我参考了http://mongodb.github.io/mongo-java-driver/3.0/driver-async/getting-started/quick-tour-admin/,但这对我来说不是足够的信息。
谢谢!

一些代码会帮助我们了解你目前的进展。 - Danielson
从MongoDB Java驱动程序版本3.0及更高版本(3.12+)开始,使用database.runCommand()方法获取集合统计文档;请参见https://stackoverflow.com/questions/61052446/how-to-call-db-collection-stats-from-mongo-java-driver-using-mongoclient-class/61052966#61052966。 - prasad_
3个回答

10

@Yoshiya(对不起,我没有足够的评论权限)

这在我使用的3.2驱动程序上有效(由Mongo团队的Kay Kim提供)

MongoDatabase database = mongoClient.getDatabase("mydb");
Document stats = database.runCommand(new Document("collStats", "myCollection"));

这个文档是 org.bson.Document 吗?另外,您能否提供链接或详细说明 collStats、myCollection 等是什么? - Naman
2
@nullpointer - 好的,我想让这尽可能小而简洁,并假定人们只会搜索官方文档来解决这些问题,但没问题...
  1. 是的,它是org.bson.Document
  2. 对于collStats,请参见:https://docs.mongodb.com/manual/reference/command/collStats/
  3. 'myCollection'指的是您想在上面运行'collStats'(见上文)的mongo集合的名称
基本上,这只是针对正式记录的mongo命令的可行Java语法。希望这有所帮助。
- beluga

4

使用CommandResult在Java中找到collection stat,请查看下面的代码:

Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("data base name");
CommandResult resultSet = db.getCollection("collectionName").getStats();
System.out.println(resultSet);
System.out.println(resultSet.get("count"));
System.out.println(resultSet.get("avgObjSize"))

太好了!为我工作。请将变量cursorDoc更新为resultSet。 - nhthai
3
有人知道如何在不使用这些已弃用的类的情况下,使用MongoDB Java驱动程序3.2来完成这个任务吗? - Yoshiya

1

This will work:

CommandResult resultSet = db.getCollection("emp").getStats();
        System.out.println(resultSet);

你将获得状态输出的所有细节:

status.ouput

{ "ns" : "test.emp" , "count" : 2 , "size" : 96 , "avgObjSize" : 48 , "numExtents" : 1 , "storageSize" : 8192 , "lastExtentSize" : 8192.0 , "paddingFactor" : 1.0 , "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only." , "userFlags" : 1 , "capped" : false , "nindexes" : 1 , "indexDetails" : { } , "totalIndexSize" : 8176 , "indexSizes" : { "_id_" : 8176} , "ok" : 1.0}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接