Java中运用MongoTemplate对MongoDB实现分组查询和联表查询

本文介绍了如何在Java中利用MongoTemplate操作MongoDB,分别展示了如何进行分组查询以计算各学科平均分,以及如何结合联表查询获取每个学生所有科目的平均分及详细信息。通过具体的MongoTemplate代码示例,详细解释了查询过程和结果解析。
摘要由CSDN通过智能技术生成

库里有两个Collection,分别为Student和Tests,存储学生信息和考试成绩信息。

Student的Document:

{
	"_id" : ObjectId("5db6423241b19004100bb0cb"),
	"name" : "小霞",
	"age" : "11",
	"gender" : "女"
},
{
	"_id" : ObjectId("5db6422141b19004100bb0ca"),
	"name" : "小红",
	"age" : "10",
	"gender" : "女"
},
{
	"_id" : ObjectId("5db6420f41b19004100bb0c9"),
	"name" : "小张",
	"age" : "11",
	"gender" : "男"
},
{
	"_id" : ObjectId("5db641c641b19004100bb0c7"),
	"name" : "小王",
	"age" : "10",
	"gender" : "男"
}

Tests的Document:

{
	"_id" : ObjectId("5db643a567c1930410eadd55"),
	"studen
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
你可以使用 `MongoTemplate` 的 `executeCommand()` 方法执行 MongoDB 的 `dbStats` 命令来获取集合表空间大小。 示例代码如下: ```java MongoOperations mongoOps = new MongoTemplate(new MongoClient("localhost"), "testdb"); CommandResult result = mongoOps.executeCommand("{ dbStats: 1, scale: 1024 }"); DBObject obj = (DBObject) result.get("collections"); for (String collectionName : obj.keySet()) { DBObject collectionStats = (DBObject) obj.get(collectionName); double size = Double.parseDouble(collectionStats.get("size").toString()); double storageSize = Double.parseDouble(collectionStats.get("storageSize").toString()); double totalIndexSize = Double.parseDouble(collectionStats.get("totalIndexSize").toString()); double indexSizes = Double.parseDouble(collectionStats.get("indexSizes").toString()); double fileSize = Double.parseDouble(collectionStats.get("fileSize").toString()); System.out.println("Collection: " + collectionName); System.out.println("Size: " + size / 1024 + " KB"); System.out.println("Storage Size: " + storageSize / 1024 + " KB"); System.out.println("Total Index Size: " + totalIndexSize / 1024 + " KB"); System.out.println("Index Sizes: " + indexSizes / 1024 + " KB"); System.out.println("File Size: " + fileSize / 1024 + " KB"); } ``` 上述代码,`dbStats` 命令返回的结果包含了所有集合的统计信息。你可以遍历结果的每一个集合,然后获取其表空间大小等信息。在上述代码,我们将表空间大小等信息输出到控制台。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值