Go——获取mongo数据库集合的信息

本文介绍如何使用MongoDB命令及Go语言查询集合信息,包括集合大小、文档数量、存储空间等,并提供转换单位的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

终端查看mongo集合的信息

以 mongocrud数据库、crud集合为例

执行命令
use mongocrud
// 以下命令默认以 bytes 为单位
db.crud.stats()
// 以下命令以 kb 为单位
db.crud.stats(1024)
显示如下
{
	"ns" : "mongocrud.crud",
	"size" : 193,
	"count" : 3,
	"avgObjSize" : 64,
	"storageSize" : 36864,
	"capped" : false,
	...
	"nindexes" : 1,
	"totalIndexSize" : 36864,
	"indexSizes" : {
		"_id_" : 36864
	},
	"ok" : 1
}
参数释意

ns:集合的命名空间,可以理解为集合名称
size:集合中数据占用空间大小,不包括索引 ,单位为字节
count:集合中的文档总数
avgObjSize:平均对像占用的空间大小
storageSize:给整个集合分配的存储空间
nindexes:索引个数,每个集合至少有一个 _id 索引
totalIndexSize:所有索引大小总和
indexSizes:列出集合的所有索引字段,以及索引大小

直接查看某一参数的值

比如查看 size 的值

db.crud.stats().size

Go获取mongo集合的信息

func getSize(database string, table string)  {
	clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")

	// Connect to MongoDB
	client, err := mongo.Connect(context.TODO(), clientOptions)
	db := client.Database(database)

	result := db.RunCommand(context.Background(), bson.M{"collStats":table})

	var document bson.M
	err = result.Decode(&document)

	if err !=nil {
		panic(err)
	}

	fmt.Printf("Collection size: %v Bytes\n", document["size"])
	//将获取的值转化为数值类型
	//var num float32
	//num  =  float32(document["size"].(int32))
	//fmt.Println(num)
	fmt.Printf("Average object size: %v Bytes\n", document["avgObjSize"])
	fmt.Printf("Storage size: %v Bytes\n", document["storageSize"])
	fmt.Printf("Total index size: %v Bytes\n", document["totalIndexSize"])
}

在这里插入图片描述

当存储量太多,占用空间太大,以Bytes方式返回数据就显得太冗余了,此时可以通过以下方式转化为KB单位输出

result := db.RunCommand(context.Background(), bson.M{"collStats":table, "scale":1024})

但是以上代码在运行时有时会报错:go mongo: 'scale', bad cmd:,如果只是测试,多刷几次即可,但是开发中会有什么影响视功能而论!

如果有解决方案的欢迎留言~

♥ 喜 欢 请 点 赞 哟 ♥
(●ˇ∀ˇ●)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九思梦鹿

喜欢,请记得点赞或赞赏哟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值