2016-04-11 4 views
1

Map関数がキーを配列として送出するCouchDBにMapReduce関数を書きたいと思いますが、reduce関数はマップキーの値の1つのみを使用していました。例えば:CouchDB:Reduceを使用しているときにマップ関数で配列キーを使用するには?

地図機能:

function(doc) { 
    if (doc.type_ === 'survey') { 
     emit([doc.timeRecorded_, doc.imei_], 1); 
    }; 
}; 

機能を削減:EPOCH番号で

function(k,v) { 

    // How to handle only the doc.imei_ as the value? 
    // Or, alternatively, how to filter based on timeRecorded_ somewhere other than the map function? 
    return sum(v) 
} 

timeRecorded_ので、(偶然を除く)は、重複はありません。もし私がそれを集計するならば、それは「日」の値に丸める必要があります。あるいは、データが、ソースデータに既に丸められているように準備することができる(日付レコードに変更された可能性があります)

答えて

2

この問題のよく知られているパターンは、日付を配列に分割することです(例:[year, month, day, hour, minute];間隔は異なりますが、順序は保持されます)、配列をキーとしてマップ関数で使用します。

したがって、group_level(「年別」、「月別」、「日別」、「時間別」、「分別」など)に応じて行を減らすことができます。

出典:http://blog.couchbase.com/understanding-grouplevel-view-queries-compound-keys

関連する問題