私はMongoDBで新しいアプリケーションを作成していますが、ドキュメント指向のモデリングスタイルが私のすべてのモデルに非常によく適合していることがわかりました。
しかし、私の1つの障害は、「チェックイン」スタイルのアクションです。ユーザーはある場所でチェックインできます。チェックインごとに次のものを保存する必要があります。
- ユーザーID
- プレイスID
- チェックイン日
通常、これをユーザードキュメントの下に埋め込みとして保存しますが、次の質問を頻繁に行います。
- ユーザーがチェックインしたすべての場所はどこですか?
- 特定の場所で行われたすべてのチェックインは何ですか?
- 特定のユーザーと場所の組み合わせのすべてのチェックイン?
- 特定の時間枠内のユーザーまたは場所のすべてのチェックイン?
リレーショナルデータベースではこれは悲鳴has-many through
を上げますが、Mongoではそれほど明白な関係ではありません。チェックインをトップレベルのオブジェクトにして、結合スタイルのクエリのパフォーマンスヒットを取得する必要がありますか?また、時間の経過とともにチェックインオブジェクトにフィールドを追加する必要があるかもしれないので、ソリューションを柔軟に保ちたいと思います。