Ho riscontrato uno strano comportamento di mongo e vorrei chiarirlo un po '... La
mia richiesta è così semplice: vorrei ottenere una dimensione del singolo documento nella raccolta. Ho trovato due possibili soluzioni:
- Object.bsonsize - un metodo javascript che dovrebbe restituire una dimensione in byte
- db.collection.stats () - dove è presente una riga "avgObjSize" che produce una visualizzazione di dimensioni "aggregate" (medie) sui dati. Rappresenta semplicemente la dimensione media di un singolo documento.
Quando creo una raccolta di test con un solo documento, entrambe le funzioni restituiscono valori diversi. Come è possibile?
Esiste qualche altro metodo per ottenere le dimensioni di un documento mongo?
Qui fornisco del codice su cui eseguo i test:
Ho creato un nuovo database "test" e ho inserito un documento semplice con un solo attributo: tipo: "auto"
db.test.insert({type:"auto"})
output dalla chiamata alla funzione 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
}
output dalla chiamata alla funzione bsonsize: Object.bsonsize (db.test.find ({test: "auto"}))
481