2016-06-20 8 views
0

Ich habe eine Sammlung mit einem eingebetteten Dokument, und die Auflistung ist meine Transaktionssammlung. Es ist wieWie Größe eines eingebetteten Dokuments in KB in MongoDB zu kennen ist

{ _id : ObjectId, 
userId : ObjectId, 
driverId : ObjectId, 
carId : ObjectId, 
trips : [{embedded data about each trip}] 
} 

Jetzt mit jeder Reise bestimmter Fahrer und Auto die Länge der Fahrten erhöht. Nun, was ich meinem Chef vorschlagen wollte, war, diese Sammlung zu brechen. Anstatt ein Array von eingebetteten Dokumenten zu haben, haben Sie ein einziges Reisedetail mit jedem Dokument. Das ist wie das ganze Dokument zu entrollen. Jetzt, um ihn zu überzeugen, muss ich ihm Zahlen geben, um mein Argument zu unterstützen, dass, wenn n Anzahl der eingebetteten Dokumente hinzugefügt wird, das Dokument 16MB überschreitet, was für ein mongoDB-Dokument am höchsten ist und es zeitaufwendig ist, darin Abfragen auszuführen kenne die Größe von 1 eingebetteten Dokument nicht, kann also nicht teilen und einige Zahlen geben. Wie würde ich die Größe eines Dokuments berechnen? Und was auch immer ich tue, ist es schematisiert. Wie in mongoDB gibt es keine strengen Regeln, daher ist meine Frage auch etwas eigensinnig. Hoffe, dass die Gemeinschaft versteht

Antwort

1

Sie können die BSON Größe eines Dokuments berechnen mit

var myDocument = db.collection.findOne({_id:<some id>}) 
Object.bsonsize(myDocument); 

Das Ergebnis in Bytes ist. Weitere Informationen finden Sie unter Object.bsonsize().

In Bezug auf Ihr Dokumentschema hängt es von Ihrem Anwendungsfall ab. Allerdings sieht es so aus, als würde Ihr Dokument in seinem aktuellen Design nicht viele Reisen durchführen. Siehe auch hybrid or bucket schema design für eine andere Alternative.

Verwandte Themen