巴扎黑2017-04-21 11:21:13
直感的なアイデア:
- コレクションを使用する場合、各文書には、文書タイプが収入の詳細であるかサポートの詳細であるかを識別するフィールドが必要です。
2 つのコレクションを使用する場合、収入と支出の詳細を表示するときは、2 つのクエリを通じて収入のコレクションと支出のコレクションを別々にクエリし、それらを結合して表示する必要があります。
-
質問にある具体的でない要件を詳しく分析してみましょう:
コレクションの場合、各収益と支出の記録はコレクション内に配置されるドキュメントです。さまざまな種類のデータについては、ドキュメントは自由なスキーマであり、データの保存に問題があるわけではありません。データを処理して表示するには、収入と支出の詳細のデータ構造とフィールド構成を適切に定義する必要があります。クエリの場合、時間に基づいてクエリを実行し、収入と支出のタイプを識別するフィールドに応じて結果を個別に表示できます。
2 つのコレクションに分割する場合、異なる種類のデータを保存しても問題はありません。現時点では、コレクションは基本的にリレーショナル データベース内の 2 つの異なるテーブルであり、それぞれに干渉することなく独自のデータが含まれます。通常、mongodb から収入明細と支出明細を 2 回に分けて取り出し、それらを時系列にマージして並べ替える必要があります。ソートのワークロードは mongodb からアプリケーション側に転送されます。 -
- どちらのオプションにもそれぞれ長所と短所があります。データの量がそれほど大きくない場合は、コレクションに保存され、アクセスが簡単な最初のオプションを使用することをお勧めします。結局のところ、アプリケーションの拡張はデータベースの拡張よりも便利です。
個人的な意見としては、データ量が多くない場合は、コレクションに保存される最初のソリューションを使用することをお勧めします。データ量が多い場合は、さまざまな期間の収入と支出の詳細を保存できます。フロントエンドに表示する場合、時間帯に応じて複数のコレクションを表示します。この場合、時間の経過とともにコレクションを水平方向に増やすだけで済み、クエリの際にデータ アクセス コードを変更する必要はなく、クエリの期間に応じて異なるコレクションを切り替えるだけで済みます。シンプルかつ効率的。
返事
0