ユーザーのデータを各レビューに含める必要があります (別名、非正規化として):
{ id:777777 , user: { id:"aaaaaa", age:19 , sex:"f" } , text:"some review data" }
{ id:888888 , user: { id:"aaaaaa", age:19 , sex:"f" } , text:"some other review data" }
{ id:999999 , user: { id:"bbbbbb", age:20 , sex:"m" } , text:"mome review data" }
ここでは、MongoDB Data Modeling に関する次のリンクを参照してください。
非正規化に関する注意
リレーショナル純粋主義者は、あたかも普遍的な法則に違反しているかのように、すでに不安を感じているかもしれません. ただし、MongoDB コレクションはリレーショナル テーブルと同等ではないことに注意してください。それぞれが独自の設計目的を果たします。正規化されたテーブルは、アトミックで分離されたデータのチャンクを提供します。ただし、ドキュメントはオブジェクト全体をより厳密に表現します。ソーシャル ニュース サイトの場合、ユーザー名は投稿されるストーリーに固有のものであると言えます。
ユーザー名の更新はどうですか?確かに、そのような更新には費用がかかります。幸いなことに、この場合、それらはまれです。非正規化で達成される読み取りの節約は、時折の更新のコストを確実に上回ります。残念ながら、これは厳格な規則ではありません。最終的には、開発者は適切なレベルの正規化についてアプリケーションを評価する必要があります。