私はこの種のSQLクエリに相当するものを探しています。MongoDBで最も頻繁に発生する値を見つける最良の方法は何ですか?
SELECT field, count(*) as counter from table order by counter DESC
これを達成するための最良の方法は何ですか?
ありがとうございました
私はこの種のSQLクエリに相当するものを探しています。MongoDBで最も頻繁に発生する値を見つける最良の方法は何ですか?
SELECT field, count(*) as counter from table order by counter DESC
これを達成するための最良の方法は何ですか?
ありがとうございました
Map-Reduceを使用してください。キーと値1を出力して各ドキュメントをマップし、単純な縮小操作を使用してそれらを集計します。 http://www.mongodb.org/display/DOCS/MapReduce
それぞれのカウントを別々に、つまり自分のコレクション内で追跡することで、集計クエリを処理します。こうすることで、「最も頻繁に発生する」コレクションを簡単に照会することができます。欠点:データが変わるたびに別の書き込みを実行する必要があります。
もちろん、Map/Reduceを使用して、そのコレクションを時々更新することもできます。これは、情報の正確さとその頻度を少し変えます。
Map/Reduce操作を非常に頻繁に呼び出さないようにしてください。インタラクティブな方法(つまり、すべてのページビューではなく)ではなく、カウントを更新するオフラインプロセス毎時間またはそれ以上。したがって、カウントが非常に迅速に変化する場合は、カウンターコレクションを使用してください。
私は一度だけ実行する必要があります。私はパフォーマンスについて心配していません、私は答えがほしいです。 – Zach
次に、別個の値を取り出してそれぞれのカウントを照会するのはなぜですか?それは非常に高速ではありませんが、非常に簡単です。 – mnemosyn
また、それを行う最善の方法について興味があります。 – Zach