Napotkałem dziwne zachowanie mongo i chciałbym to nieco wyjaśnić ...
Moja prośba jest prosta: chciałbym uzyskać rozmiar pojedynczego dokumentu w kolekcji. Znalazłem dwa możliwe rozwiązania:
- Object.bsonsize - jakaś metoda javascript, która powinna zwrócić rozmiar w bajtach
- db.collection.stats () - gdzie znajduje się wiersz 'avgObjSize', który generuje pewien "zagregowany" (średni) widok rozmiaru danych. Po prostu reprezentuje średni rozmiar pojedynczego dokumentu.
Kiedy tworzę kolekcję testową z tylko jednym dokumentem, obie funkcje zwracają różne wartości. Jak to jest możliwe?
Czy istnieje inna metoda uzyskania rozmiaru dokumentu mongo?
Tutaj podaję kod, na którym przeprowadzam testy:
Utworzyłem nową bazę danych „test” i wprowadziłem prosty dokument z tylko jednym atrybutem: typ: „auto”
db.test.insert({type:"auto"})
dane wyjściowe z wywołania funkcji stats (): db.test.stats () :
{ "ns" : "test.test", "count" : 1, "size" : 40, "avgObjSize" : 40, "storageSize" : 4096, "numExtents" : 1, "nindexes" : 1, "lastExtentSize" : 4096, "paddingFactor" : 1, "systemFlags" : 1, "userFlags" : 0, "totalIndexSize" : 8176, "indexSizes" : { "_id_" : 8176 }, "ok" : 1
}
dane wyjściowe wywołania funkcji bsonsize: Object.bsonsize (db.test.find ({test: "auto"}))
481