2011-08-10 12 views
0

私は2つのコレクション、投稿、コメントを持っていると仮定します。親の属性に従って文書を見つける

post = { _id: 1, 
     language: 'en', 
     title: ..., 
     author: ... } 

comment = { _id: 2345, 
      parent: 1, 
      title: ..., 
      author: ... } 

親離れてすべてのコメントを見つけることから「en」と言語を持っているすべての文書(コメント)を見つけるためにそこに別の方法であり、その後、言語を見つけるために彼らの親属性を照会?

そうでない場合、そのようなクエリをより簡単に実行できるようにドキュメントを別の方法で表示する方法がありますか? (その場合は、1つの記事につき1つの文書ではなく、コメントごとに異なるコレクションを作成しました。なぜなら、文書全体を取得してフィルタリングするよりも簡単で、1つのコメントを取り出す方が効率的だからです。

答えて

1

まず、あなたが望むことをするためのショートカットはありません。あなたの最初の質問に対する答えは「いいえ」です。

NoSQLデータベースでは、正規化はあまり重要ではありません。この場合、言語コードに基づいてコメントを照会したいので、コメントに言語コードを追加するだけです。どのアプリのコメントをアプリ側に追加するかを知っているので、必要に応じて簡単に投稿の言語を保存することができます。

あなたのスキーマについては、 1つのコメントを定期的に表示する場合は、1つのコメントにつき1つのドキュメントを持つことが最適なソリューションになる場合があります。他のほとんどの状況では、少なくともかなりの量のコメントを表示することがあります。その場合、通常、ドキュメントごとにコメント集を持たせる方がよいでしょう。コメントページごとに文書を言う。非常にぴったりなページネーションも作成します。あなたが投稿ごとに多くのコメントを期待していない場合は、それらを埋め込むことができます。

関連する問題