私はこのようなテーブルを持っています:
# TABLE IN DB
| Cat | Date | ... datas ... |
| 1 | 11-02 | data2
| 2 | 11-04 | data2
| 1 | 12-01 | data1
| 2 | 12-01 | data1
| 2 | 12-03 | data3
| 2 | 12-04 | data4
私の課題は、カテゴリごとに 1 つのエントリを取得し、特定のデータを選択することです (ここでは data1 を選択します)。出力例:
# TABLE RESULT
| Cat | Date | ... datas ... |
| 1 | 11-02 | data2
| 2 | 11-04 | data2
実際には、配列内のすべてのカテゴリ番号と別の配列内のすべてのデータを取得しています。次に、「foreach」という 2 つのループを作成します。
foreach ($array_cat as $cat){
foreach($array_data as $data){
MONGO_FIND_HERE...
}
}
コレクションは非常に大きく、多くの猫とデータがあるため、これは約 1000 から 5000 のクエリを作成し、完了するまでに 10 秒から 20 秒かかります。
どうすればこれを高速化できますか。申し訳ありませんが、MongoDB は初めてですが、大好きです :)
編集 1: 簡単な例
| Cat | Date | ... datas ... |
| 1 | 11-02 | data2
| 2 | 11-04 | data2
| 1 | 12-01 | data1
| 2 | 12-01 | data1
| 2 | 12-03 | data3
| 2 | 12-04 | data4
最新の日付と "data2" を持つカテゴリごとに 1 つのエントリのみを持つにはどうすればよいですか? どの構造/アーキテクチャを使用すればよいですか?
# TABLE RESULT
| Cat | Date | ... datas ... |
| 1 | 12-04 | data2
| 2 | 12-04 | data2
どのメカニズムを使用すればよいですか?「forループ」を使わずにそれを行う方法は? どのカテゴリが存在するかを知っている配列: array(1,2) があります。より良い :=) ?