私はeラーニングアプリを作成しており、学生の活動をタイムラインとして表示しています。user
コレクションに埋め込むか、。を使用して別のコレクションを作成する必要がありuserId
ます。
制約:
- 1対多の関係。
- ユーザーアクティビティは詳細で多数あります
- 90%の時間、一度に1人のユーザーのみを表示する必要があります。もう一方のケースは、スーパーバイザー(教師)がユーザーのアクティビティの概要を表示する必要がある場合です(おそらく別のコレクションですか?)
- アクティビティを検索して生徒を見つけるユースケースについては考えていませんが、後でこれを使用する可能性がありますか?(たとえば、誰が最初に特定のアクティビティを終了したかを確認しますか?しかし、それによって関係が多対多に変わり、まったく異なる質問になります)
これらの2つの質問で、関連する問題のさまざまなスキーマを見つけました。
- MongoDBスキーマ設計-2つの収集アプローチを選択するか、埋め込みドキュメントで次のことを推奨します
try and embed as much as possible
- ユーザーのロケーション履歴を保存するためのMongoDBスキーマは思い出させます
don't bloat a collection, because querying the elements deep below might be hard, especially if you're going to use lists