0

日付範囲の入力に基づいてデータを表示するビューを cb に作成したいと考えています。

私の質問は、フィールドとデータを区別するにはどうすればよいですか? これが私のマップコードです:

function (doc, meta) {
  if(!doc.clipGeneration.fromCache){
    var eiid = doc.clipGeneration.batchId;
    if (eiid == null){
        eiid = "API";
    }
    if (  !(doc.clipGeneration.externalId.indexOf("API_INTERVAL_TEST")>=0) )   {
    emit([doc.clipGeneration.clipStyle, eiid,doc.eventOccurenceTimeStamp[0], doc.eventOccurenceTimeStamp[1], doc.eventOccurenceTimeStamp[2],doc.eventOccurenceTimeStamp[3]], doc.insertRawTimestamp);
        emit([doc.clipGeneration.clipStyle, "ALL",doc.eventOccurenceTimeStamp[0], doc.eventOccurenceTimeStamp[1], doc.eventOccurenceTimeStamp[2],doc.eventOccurenceTimeStamp[3]], doc.insertRawTimestamp);
    emit([doc.eventOccurenceTimeStamp[0], doc.eventOccurenceTimeStamp[1], doc.eventOccurenceTimeStamp[2],doc.clipGeneration.clipStyle], doc.insertRawTimestamp);
    }
  }
}

reduce は _count で、フィルターはたとえば次のとおりです。

開始キー: [2015,1,1,null]

エンドキー: [2015,1,31,"\uffff"]

出力は、日付範囲によって期待されるとおりです。

{"key":[2015,1,11,"5001188"],"value":1},
{"key":[2015,1,12,"100022"],"value":5},
{"key":[2015,1,12,"155"],"value":11},
{"key":[2015,1,13,"100022"],"value":9},
{"key":[2015,1,13,"155"],"value":6},
{"key":[2015,1,13,"5001159"],"value":1},
{"key":[2015,1,13,"5001190"],"value":3},
{"key":[2015,1,14,"100022"],"value":12},
{"key":[2015,1,14,"5001194"],"value":1},
{"key":[2015,1,15,"100022"],"value":11},
{"key":[2015,1,16,"100022"],"value":10},
{"key":[2015,1,18,"100022"],"value":8},
{"key":[2015,1,18,"5001096"],"value":6},
{"key":[2015,1,18,"5001194"],"value":3}

しかし、「100022」が何度も繰り返されることがわかるように、SQL で区別できるようにするにはどうすればよいのでしょうか。

ありがとう

4

1 に答える 1

0

実際に ID フィールドのみを区別する方法はありません。キーごとに減らすことができますが、キー全体のみです。あなたの場合は [date, id] です。N1QL には SQL と同じように実際の DISTINCT キーワードがあるため、これを行うことができますが、現時点ではまだ開発者プレビュー段階です。

于 2015-04-21T14:09:35.830 に答える