ブログに多数の投稿を含めることができ、投稿に多数のコメントを含めることができる典型的なブログ アプリケーションを考えてみましょう。それにアクセスするための RESTfull API を提供したいとします。
リレーショナル データベースを使用してこのデータを格納する場合、posts テーブルにはブログへの外部キーがあり、comments テーブルには投稿への外部キーがあります。
Mongoose 経由で MongoDB を使用する場合、コレクションを設計する 3 つの異なる方法があります。
3 つのコレクションを用意します。1 つはブログ用、もう 1 つは投稿用、もう 1 つはコメント用です。投稿のスキーマにはブログを参照するフィールドがあり、コメントのスキーマには投稿を参照するフィールドがあります。(リレーショナル ソリューションと非常によく似ています。)
繰り返しますが、3 つのコレクションですが、各ブログには投稿への参照の配列があり、各投稿にはコメントへの参照の配列があります。
ブログには投稿の配列が含まれ、各投稿にはコメントの配列が含まれる、サブドキュメントとサブサブドキュメントを含む 1 つのコレクションのみ。
どちらが正しいですか、それぞれの長所と短所は何ですか?