2012-01-28 10 views
2

私はフォーラムのモデルを作成しています。スレッドとコメントの束を考えてください。スレッドには多くのコメントがあります。 RDBMSの世界では、私は今、私は推測する、これで、データ/スキーマが多く、通常の形式のいずれかをたどるようにフォーラムのモデルfor MongoDB

Thread --has many--> Comment 
id     id 
user_id    thread_id 
        user_id 

としてこれを設計します(私はこれを忘れてしまいました)。そして、私はこれが最も感覚的な方法だと思う。しかし、NoSQL世界(MongoDB)でこれを行う場合、この関係を設計する最良の方法は何でしょうか?私はRDBMSのやり方でほとんどそれを行うことができましたが、私は埋め込みオブジェクトを使う利点を失います。何らかの理由で、私はそれは私が求めています何だと思うこれを行うには、最も無意味な方法だろう何

Thread 
_id 
user_id 
comments => [{_id, user_id, body, created_at}] 

のようにそれを行うことがより傾いています。なぜ?

答えて

2

まず第一に、私はあなたに似た例で説明している、あなたはSchema Design上のドキュメントを読んでいる願っています。

あなたの選択に応じて埋め込みまたはリンクすることができます。コメント数が管理可能(比較的小さい)になると予想され、コメントが多すぎるとリンクすると私は埋め込みます。

埋め込みには、1つのポスト/スレッドを表示するために1回のDB呼び出しが必要で、通常はmongodbレスポンスをそのまま(クライアント側がUIレンダリングを行う場合)そのまま送ることができるという利点があります。 *注:コメントを追加するには、$ pushを使用してUPDATEが必要です。そしてcomment._idはあなたが作成しなければならないことを覚えておいてください.MongoDBは自動作成しません。埋め込まれたシナリオでのコメントデータの任意の更新は$の位置演算子とUPDATEが必要となります。*

関連する問題