2011-07-07 6 views
2

私は現在アメリカの大学に応募したいアフリカの学生を支援するために、チャリティー学生支援サイトを構築しています。私はスレッドのコメントシステムを構築したい。 MongoDBの使用を計画していました(バックエンドはすべてjavaです)。私はかなり新しいMongoDBだから、すべての情報を吸収するのに時間がかかります。私はあなたのためのいくつかの質問があります:ネスト/スレッドコメントシステム - MongoDBとJava

誰もが私が見てみることができる任意の実装を知っていますか?私は週末の終わりまでにこれをやりたかったのです。私はこのような何かやって考えていた

:助けを

conversation 
{ 
    _id: BigInt, 
    entityID: BigInt, //reference to what is being commented 
    comments:[ 
    status: String (approved, spam, removed), 
    UID: BigInt, 
    timestamp: date 
    commentText: String 
    likeCount: int 
    replies:[ 
     status: String (approved, spam, removed), 
     UID: BigInt, 
     timestamp: date 
     commentText: String 
     likeCount: int 
    ] 
    ] 
} 

おかげで多くのことを、

+0

これはほぼ同じ質問で、数十のスライドや講演やドキュメンテーションで説明されています。標準的な "ブログ投稿"の例はどこでも使用されています。 http://www.mongodb.org/display/DOCS/Schema+Design –

+0

私が見るほとんどの実装の問題は、コメントに返信を埋め込むと、返信を更新するのが難しくなるということです。返信のステータスを承認済みから削除済みに変更したいとしましょう。埋め込みオブジェクトを使ってどうすればいいですか? – Anthony

+0

誰も助けることができますか?私は周りを検索して、私はまだ解決策を見つけることができません。ありがとう – Anthony

答えて

0

あなたはコメントを1つのフラットコレクションを使用してnested set modelを使用することができます。 (特にマルチルート、マルチツリーのコレクションがあるため)維持するのは少しの作業ですが、スケーラビリティと操作性とクエリ性が向上します。あなたが持っているでしょう

conversations { 
    _id: ObjectId, 
    whatever fields you need, 
} 
comments { 
    _id: ObjectId, 
    parentId: ObjectId, 
    conversationId: ObjectId, 
    authorId: ObjectID, 
    commentText: String, 
    lft: Int, 
    rght: Int, 
    ... 
} 

を私はJavaドライバに慣れていないんだけど、それは_idフィールドの特定のタイプを持っていませんか?これはあなたにタイムスタンプへの自由なアクセスを与え、あなたにすべてのユニークなIDを与えます。