0

たとえば、フィールドが1つあり、特定の日付よりも大きいextr_dateドキュメントを使用するMAP-REDUCEを実行したい場合は、extr_date

そのための2つのオプションがあります。

まず、以下のように結果ステートメントにクエリフィールドを提供します

var res_acc = db.some_input_coll.mapReduce(map_func, red_func, {query : { extr_date : {$gte:any_given_date}},finalize : final, out :{ "merge" : "some_output_coll" }});

次に、以下に示すように、if条件をマップ関数に提供します。

var map_func = function(){
if(this.extr_date > given_date)
{
    emit({...} , {...})
}

...だからどちらがお勧めですか?

結果ステートメントを使用したクエリにより、マップを調べるドキュメントの数が減りますか?

はいの場合、調査したその数の文書をどのように見つけることができますか?

4

1 に答える 1

0

「extr_date」にインデックスがあるとすると、最初の方法は、マップに送られるドキュメントの数を減らすため、おそらくより高速になります。

除外されるドキュメントの数を把握するには、.explain()を使用してクエリを個別に実行してみてください。このようなもの:

db.some_input_coll.find({ extr_date : {$gte:any_given_date}}).explain()

お役に立てれば。

于 2012-05-09T16:10:48.460 に答える