1

候補者の詳細を含むmongodbデータがあります

プロパティはリストベースの資格です

doc1:  "qualification" : ["BS","Diploma"]
doc1:  "qualification" : ["BS","MS"]
doc1:  "qualification" : ["PG"]
doc1:  "qualification" : ["Diploma"]
doc1:  "qualification" : ["BS"]
doc1:  "qualification" : ["MS"]
doc1:  "qualification" : ["BS","MS","Phd"]

これから、各資格の発生を計算するmongodb map/reduceを使用して上位3つの資格を生成し、上位3をフィルタリングしました

結果は

{"BS":4,"MS":3,"Diploma":2}

しかし、この map/reduce は毎回一時コレクションを作成するため、アプリケーションの速度が低下すると思います。このシナリオで group ステートメントを使用できますか? または、Python を使用しているので、counter() を使用するすべての資格のリストを生成できますか?

実行可能で時間がかからないのはどれですか?

4

1 に答える 1

1

このシナリオで group ステートメントを使用できますか?

はい。

ただし、groupコマンドを最後に確認したのはシングルスレッドであるため、シャード構成では速度が低下する可能性があります。

また、2.1 および 2.2 で利用可能なAggregation Frameworkを確認することもできます。これにより、一時コレクションも回避されます。

最後のオプションは、python クライアントでデータを処理することです。非常に単純な場合は、単純にデータをループして、結果をメモリに保存することができます。

于 2012-07-24T23:48:40.240 に答える