2011-08-07 13 views
7

mongoのWebサイトに関するほとんどのmongodbスキーマ設計記事とほとんどの質問をここで調べました。私が把握していないユースケースがまだ1つあります。これらのチュートリアルを見るとき、彼らは通常、記事コメント問題と製品/カテゴリ問題を参照します。投稿のリストを照会するときに、1対多の関係(投稿者から投稿者)をモデル化する方法を理解したいと思います。以下にサンプルのスキーマを示します。mongodbの作成者/ユーザーモデル用のスキーマを設計する方法

Users: { 
    _id: ObjectID 
    Name: String 
    Email: String 
} 

Posts: { 
    _id: ObjectID 
    user_id: ObjectID 
    body: String 
    comments: [ 
     body: String 
    ] 
} 

ここで、最新の10個の投稿のクエリを実行するとします。かなりシンプルなクエリですが、各自がユーザを指し示す一意のObjectIDを持つ可能性のある投稿があります。ここで、投稿ごとに各ユーザーの名前とメールアドレスを取得する方法を説明します。

  1. あなたはポストのクエリからのObjectIDのユーザーの配列を作成し、クエリのdb.users.findを実行する必要があります({_id:{$で:PostsUserIDArray}});その後、適切なユーザー情報を正しい投稿と照合するためにアプリケーションロジックを使用しますか?

  2. データのコピーを投稿してください。 I.ユーザーID、名前、および電子メールを投稿テーブルに保存します。その後、ユーザーがこの情報を更新して投稿内のすべての情報を更新すると、フックが表示されます。

  3. 自分や友人が考えていないオプションです。

私はmongoデータモデリングの周りを頭で囲むように努力しています。

答えて

2

私はMongoDBクリエイターから見たビデオのうち、2番目の解決策を提唱しています。あなたのユーザーが名前と電子メールだけでなく、より多くのデータを持っていて、名前を教えてメールを表示すると、ポストにそれを保存するのは本当に悪いことではありません。したがって、投稿を照会するときに他のクエリを実行する必要はありません。ユーザーは通常、毎日自分の名前を変更しないので、投稿を表示するときに情報を取得するために他のクエリを実行するよりも、名前を変更した後にすべての投稿を更新する方が効果的です。

編集:ビデオへのリンクhttp://lacantine.ubicast.eu/videos/3-mongodb-deployment-strategies/

+0

おかげで、あなたはオフ偶然これらのビデオのいずれかへのリンクがありますか?私は彼らがこれについて話す場所を見たいと思っています。 – rickharrison

+0

ビデオのいずれかで投稿を更新しました。 – TrexXx

+0

この記事を考慮する必要があります http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1 – olyjosh

関連する問題