1
function (doc) {
  if(doc.jsonType == 'cart') {
    if((Date.parse(doc.updated_at) + (15 * 60000)) >= Date.now()) {
      for(item in doc.items) {
        emit(item, doc.items[item].quantity);
      }
    }
  }
}

この関数を使用すると、過去15分以内に更新されたドキュメント(たとえば2)を取得します。数量は1と2で、合計は3になります。ただし、組み込みのreduce関数_sumを使用すると、32(既存のすべての行の合計)が得られます。

ビューを数回更新しましたが、それでも正しい結果が得られません。

どうしたの?

4

1 に答える 1

2

Date.now()in map(およびreduce)関数の使用は間違っています。マップ/リデュースの結果はディスクに保存され、クエリ時にすばやく取得できます。あなたが得る価値はDate.now()、それが照会されたときではなく、地図が作成されたときの価値です。CochDBのマップがどのように機能するかについての入門資料は、wikiTheDefinitiveGuideにあります。

于 2012-05-19T06:18:10.493 に答える