私は2つの文書を持っています:
アプリケーション (表示とは関係ありません)、およびスキャン:
{
application_id: 'xxx'
}
すべてのアプリケーションをスキャン数でソートしたいと思います。
SQL を使用すると、次の行の中で何かを実行できます。
SELECT applications.*, COUNT(scans.*) as scans_count FROM applications
LEFT JOIN scans ON scans.application_id = applications.id
GROUP BY applications.id
ORDER BY scans_count
mongo の集約フレームワークではこれが許可されていないようです。
いくつかのオプション:
マップ/リデュース
これがここで関連しているかどうかはわかりません。map/reduce はちょっと遅いので、答えを非常に速くする必要があります。
アプリケーション内にスキャン文書を埋め込む
スキャンにグローバルにアクセスする必要があるため不可能
アプリケーション ドキュメントにフィールドを追加して、スキャン数を追跡します。
これはうまくいくかもしれませんが、条件によっては、いつかいくつかのスキャンだけをカウントしたい場合、問題が再び発生します
私はmongodbにかなり慣れていませんが、私の問題に対する最良の解決策は何ですか? 私のスキーマはリレーショナルすぎますか? もしそうなら、どうすれば改善できますか?