Мне нужно получить размер коллекции базы данных mongo.
Проект написан на голанге с использованием mongo-go-driver.

1
Tony1221 25 Окт 2019 в 12:53

3 ответа

Мне нужно получить размер коллекции базы данных mongo.

Вы можете получить разнообразную статистику хранения коллекции MongoDB с помощью collStats команда. Вы можете использовать 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, вы можете увидеть дополнительную информацию на Пример поиска базовой статистики. Вы также можете указать параметр scale, чтобы изменить байты на килобайты, см. Поиск статистики с масштабированием .

Обратите внимание, что приведенный выше пример написан с использованием mongo-go-driver v1.1.x.

2
Wan Bachtiar 30 Окт 2019 в 03:00

Есть два способа проверить это

Точный с 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
Grzegorz Żur 25 Окт 2019 в 14:36

В Mongodb

db.getCollection('collection').find({}).count()
0
dmigo 25 Окт 2019 в 14:08