3

開始日と終了日の 2 つの日付を持つドキュメントが CB にあります。たとえば、商品の値下げです。今日から来週の金曜日まで 10% オフ。今日有効な割引がある CB からすべてのドキュメントを取得するにはどうすればよいですか?

私はビューを作成し、その中に次のものを持っています:

var dt = new Date();

今日の日付を取得します。それから私は簡単なことができます

if(doc.FromDate < dt && doc.ToDate > dt){ emit([ ..... ]);

これにより、必要に応じてドキュメントがフィルタリングされます。しかし...

質問

これは、ビューとインデックスの更新に関する良いアプローチですか? 日付が変わったので、インデックスは毎日更新されますか? この点でCBの働きを理解しようとしているだけです

このタイプの検索にはどのようなアプローチが最適ですか? 無理なら言ってください!

乾杯

ロビン

注: 質問は、こちらこちらではありません。

4

2 に答える 2

5

ここで何かを明確にしましょう:

  • map() 関数は、ディスク上のインデックスを作成/更新するために使用されます。これは、ドキュメントがディスクに保存された直後に発生します。これが、 map reduce で date.now() を使用しても意味がない理由です。

  • したがって、次のように日付を発行することになります。

  • 次に、ビュー(インデックス)をクエリするときに、開始キーと終了キーを使用して範囲クエリを実行できます。

&startkey=[2013,4,16]&endkey=[2013,4,24]

于 2013-05-06T17:16:03.793 に答える