终端查看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:
,如果只是测试,多刷几次即可,但是开发中会有什么影响视功能而论!
如果有解决方案的欢迎留言~
♥ 喜 欢 请 点 赞 哟 ♥ |
(●ˇ∀ˇ●) |