1

我需要获取 mongo 数据库集合的大小。
该项目是使用 golang 编写的mongo-go-driver

4

3 回答 3

5

我需要获取 mongo 数据库集合的大小。

您可以使用collStats命令获取 MongoDB 集合的各种存储统计信息。您可以利用Database.RunCommand使用MongoDB Go 驱动程序执行数据库命令。例如:

db := client.Database("databaseName")

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

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

if err !=nil {
    panic(err)
}

fmt.Printf("Collection size: %v Bytes\n", document["size"])
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"])

上面的示例仅打印与您的问题相关的 4 条信息。但是,返回的信息更多collStats,您可以在Basic Stats Lookup示例中查看更多信息。您还可以指定scale参数以将字节更改为千字节,请参阅Stats Lookup with Scale

请注意,上面的示例是使用 mongo-go-driver v1.1.x 编写的。

于 2019-10-30T00:00:19.337 回答
4

有两种检查方法

CountDocuments的确切内容

count, err := client.Database("webshop").Collection("products").CountDocuments(context.Background(), bson.D{})

并使用EstimatedDocumentCount进行估计

count, err := client.Database("webshop").Collection("products").EstimatedDocumentCount(context.Background())
于 2019-10-25T11:36:35.200 回答
0

在 MongoDB 中

db.getCollection('collection').find({}).count()
于 2019-10-25T09:55:56.447 回答