Ich bin auf ein seltsames Verhalten von Mongo gestoßen und möchte es ein wenig klären ...
Meine Anfrage ist so einfach: Ich möchte eine Größe eines einzelnen Dokuments in der Sammlung haben. Ich habe zwei mögliche Lösungen gefunden:
- Object.bsonsize - eine Javascript-Methode, die eine Größe in Bytes zurückgeben sollte
- db.collection.stats () - Hier gibt es eine Zeile 'avgObjSize', die eine "aggregierte" (durchschnittliche) Größenansicht der Daten erzeugt. Es repräsentiert einfach die durchschnittliche Größe eines einzelnen Dokuments.
Wenn ich eine Testsammlung mit nur einem Dokument erstelle, geben beide Funktionen unterschiedliche Werte zurück. Wie ist es möglich?
Gibt es eine andere Methode, um die Größe eines Mongo-Dokuments zu ermitteln?
Hier stelle ich einen Code bereit, an dem ich Tests durchführe:
Ich habe eine neue Datenbank 'test' erstellt und ein einfaches Dokument mit nur einem Attribut eingegeben: type: "auto"
db.test.insert({type:"auto"})
Ausgabe des Funktionsaufrufs 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
}}
Ausgabe des Funktionsaufrufs bsonsize: Object.bsonsize (db.test.find ({test: "auto"}))
481