如何通过mongo-go-driver获取集合的大小

时间:2019-10-25 09:53:21

标签: mongodb go mongo-go

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

3 个答案:

答案 0 :(得分:1)

有两种检查方法

确切的CountDocuments

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

并使用EstimatedDocumentCount

进行估算
count, err := client.Database("webshop").Collection("products").EstimatedDocumentCount(context.Background())

答案 1 :(得分:1)

  

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

您可以使用collStats命令来获得MongoDB集合的各种存储统计信息。您可以利用Database.RunCommandMongoDB Go driver执行数据库命令。例如:

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编写的。

答案 2 :(得分:0)

在mongodb中

db.getCollection('collection').find({}).count()