3

クライアント管理 Web アプリケーションを作成しています。クライアントと支払いの関係を管理する正しい方法を見つけようとしています。1日に1回、アプリケーションが別のAPIにリクエストを送信し、データベースに保存する各クライアントの支払い額を同期しています。クライアントのタイプ (contract_type、sale_date など) に基づいて、支払い (支払い額) に関するレポートを常に実行する必要があります。すでにclientsコレクションを持っています。私は2つのスキーマから選択しようとしています:

{
      "client_id": "asdf123",
      "client_last_name": "BB",
      "address": "123 Main St",
      "city": "ATLANTA",
      "payments_history": [
        {
          "contract_number": "asdf123",
          "payment_date": ISODate("2012-09-02T07:00:00.0Z"),
          "amount": 103.33,
          "payment_number": NumberInt(1)
        },
        {
          "contract_number": "asdf123",
          "payment_date": ISODate("2012-09-30T07:00:00.0Z"),
          "amount": 103.33,
          "payment_number": NumberInt(2)
        },
        {
          "contract_number": "asdf123",
          "payment_date": ISODate("2012-11-04T07:00:00.0Z"),
          "amount": 103.33,
          "payment_number": NumberInt(3)
        }
      ]
  }

各ドキュメントpaymentspayment. clientクエリごとにすべてのドキュメントが膨大な量のデータに成長するため、これらの種類のデータを分離する方が良いと思います(特定のフィールドを選択している場合でも、大量のメモリが必要になります)。しかし一方で、集計レポートを実行することはできません (2 つの異なるコレクションのデータに基づいているため)。最善のアプローチは何ですか?それらを分離し、サーバー側 (php) で 2 つの異なるクエリを使用して集計を行う必要がありますか?

4

1 に答える 1