2012-01-07 16 views
8

Esiste un metodo per determinare la dimensione di un'istanza specifica di un modello/documento in un MongoDB usando Mongoid?Determina la dimensione di un documento usando Mongoid

+0

in realtà ho capito una soluzione per ottenere il numero di byte di un documento specifico: 'BSON.serialize (Model.first.as_document) .size' –

risposta

7

Quindi è possibile ottenere la dimensione teorica del documento come illustrato nel commento (BSON.serialize(Model.first.as_document).size).

Tuttavia, è necessario notare che questa potrebbe non essere la dimensione effettiva dell'oggetto "su disco". MongoDB aggiungerà automaticamente un buffer ai nuovi documenti per consentire loro di crescere sul posto. Quando si tratta di ottenere le dimensioni reali su disco per un documento specifico, non credo sia possibile.

Tuttavia, è possibile ottenere un buffer medio utilizzando db.collection_name.stats().

+1

Questo non sembra funzionare con Mongoide 3.x più. –

0

Questo funziona per Mongoid 3.1.0:

model.as_document.__bson_dump__.size 
-1

Per 3.x mongoid è possibile utilizzare ciclomotore :: :: BSON Documento

ad esempio:

your_document = Model.find(id) 
# get size 
size = Moped::BSON::Document.serialize(your_document.as_document).size 
5

Soluzione 2015 e mongoid (4.0.2):

model_instance.as_document.to_bson.size 
0

W orking per MongoID 5.x. Con la shell mongo e MongoID è semplice:

  1. ritirare il vostro oggetto id

    ModelName.first.id # then copy your_id

  2. console Run mongo

    mongo

  3. Ottenere la dimensione in byte del il documento

    Object.bsonsize(db.modelname.find({"_id": ObjectId("your_id")}))

Problemi correlati