2016-06-20 21 views
0

私は埋め込みドキュメントを持つコレクションを持っています。そのコレクションは私のトランザクションコレクションです。それはのような埋め込みドキュメントのサイズをMongoDBのKBで知る方法

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

今、特定のユーザーのドライバーと車の旅行ごとに旅行の長さが増加します。今私の上司に提案したいのは、このコレクションを破ることでした。埋め込まれたドキュメントの配列を持つ代わりに、各ドキュメントで単一の旅行詳細があります。ドキュメント全体を展開するようなものです。今すぐ私に彼を説得するために私は彼に番号を渡さなければならない。なぜならn個のトリップ埋め込みドキュメントが追加されれば、ドキュメントはmongoDBドキュメントにとって最高の16MBのサイズを超え、クエリを実行するのに時間がかかるが、 1つの埋め込み文書のサイズを知っているので、分割していくつかの数字を与えることはできません。 1つのドキュメントのサイズを計算するにはどうすればよいですか?そして私がやっていることは、それが正しいスキーマであることです。 mongoDBのように、厳密な規則はないので、私の質問も少し意見があります。あなたは結果がバイトである

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

を使用して文書のBSONサイズを計算することができ、コミュニティが

答えて

1

を理解願っています。詳細については、Object.bsonsize()を参照してください。

ドキュメントのスキーマに関しては、アプリケーションの使用方法によって異なります。あなたの文書は現在のデザインでは多くの旅行を保持しないように見える、と言っている。別の方法としてhybrid or bucket schema designも参照してください。

関連する問題