W tym artykule przedstawiam 5 sposobów, za pomocą których można sprawdzić rozmiar kolekcji MongoDB podczas korzystania z powłoki mongo.
dataSize()
Metoda
Prawdopodobnie najszybszym i najłatwiejszym sposobem sprawdzenia rozmiaru kolekcji MongoDB jest użycie db.collection.dataSize()
metoda. Ta metoda zwraca rozmiar kolekcji w bajtach.
Aby wywołać tę metodę, po prostu zastąp collection
z nazwą kolekcji, którą chcesz sprawdzić.
Przykład:
db.posts.dataSize()
Wynik:
3012
Ten przykład sprawdza rozmiar kolekcji o nazwie posts
. To tylko niewielka kolekcja z kilkoma małymi dokumentami, a więc rozmiar to tylko 3012 bajtów.
totalSize()
Metoda
db.collection.totalSize()
Metoda zwraca całkowity rozmiar w bajtach danych w kolekcji plus rozmiar każdego indeksu w kolekcji.
Dlatego użyj tej metody, jeśli chcesz poznać całkowity rozmiar, który obejmuje wszystkie indeksy.
Przykład:
db.posts.totalSize()
Wynik:
114688
Jest to ta sama kolekcja, na której uruchomiliśmy poprzedni przykład. posts
kolekcja ma trzy indeksy (w tym ten w _id
pole) i widzimy, że całkowity rozmiar jest znacznie większy niż rozmiar kolekcji bez indeksów.
stats()
Metoda
Jeśli potrzebujesz więcej niż tylko rozmiaru kolekcji, możesz wypróbować db.collection.stats()
metoda.
Ta metoda zwraca statystyki dotyczące kolekcji (w tym jej rozmiaru).
Przykład:
db.posts.stats()
Wynik (częściowy):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Ta metoda zwraca dużo danych, więc zwracam tutaj tylko pierwszą małą część. Rozmiar kolekcji znajduje się u góry wyników, w size
pole.
Domyślnie ta metoda zwraca dane o rozmiarze w bajtach. Możesz to zmienić tak, aby raportował w kilobajtach, jeśli wolisz. Aby to zrobić, użyj scale
parametr o wartości 1024
.
Przykład:
db.posts.stats( { scale: 1024 } )
Wynik (częściowy):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
db.collection.stats()
Metoda zapewnia opakowanie wokół collStats
polecenie (poniżej).
collStats
Polecenie
Jak wspomniano, db.collection.stats()
metoda jest opakowaniem dla collStats
polecenie diagnostyczne. To polecenie zwraca statystyki dotyczące kolekcji (w tym jej rozmiaru).
Przykład:
db.runCommand( { collStats : "posts", scale: 1 } )
Wynik (częściowy):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Podobnie jak w przypadku stats()
metoda, to polecenie zwraca dużo danych, więc po prostu wziąłem trochę rzeczy z góry.
Zauważ, że podałem scale
z 1
w tym przykładzie, aby zwrócić dane o rozmiarze w bajtach. Możemy to zmienić na 1024
aby zwrócić go w kilobajtach.
Przykład:
db.runCommand( { collStats : "posts", scale: 1024 } )
Wynik (częściowy):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
$bsonSize
Operator
$bsonSize
Operator potoku agregacji został wprowadzony w MongoDB 4.4 w celu zwracania rozmiaru dokumentu BSON.
Możesz użyć $bsonSize
aby zwrócić całkowity rozmiar wszystkich dokumentów w kolekcji, łącząc go z $group
i $sum
operatorów.
Przykład:
db.posts.aggregate([
{
$group: {
"_id": null,
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Wynik:
{ "_id" : null, "rootSize" : 3012 }