Couchbase文档日期搜索 - DateTime.Now()

时间:2013-05-04 08:17:53

标签: couchbase

我在CB中有一份文件,其中有两个日期,即开始日期和结束日期。比方说,产品的价格折扣。从今天开始10%折扣,下周五结束。如何从CB获得今天有效折扣的所有文件?

我提出了一个观点并在其中包含以下内容:

var dt = new Date();

今天的日期。然后我可以做一个简单的

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

这会根据我的需要过滤文档。但...

问题

这是一个很好的方法重新查看和索引更新?由于日期发生了变化,索引会每天更新吗?只是试图了解CB在这方面的工作

此类搜索的最佳方法是什么?如果不可能请告诉我!

干杯

罗宾

注意:请注意,问题不是herehere

2 个答案:

答案 0 :(得分:5)

让我在这里澄清一下:

  • map()函数用于在磁盘上创建/更新索引,这只是在“文档”保存在磁盘上之后发生。这就是为什么在map中使用date.now()减少并没有多大意义。

  • 所以你要做的是发出日期例如emit(dateToArray(doc.startDate));

  • 然后当您查询视图(索引)时,您可以使用startkey&amp;结束键进行范围查询。

  

&安培; startkey = [2013,4,16]&安培; endkey = [2013,4,24]

答案 1 :(得分:2)

索引不会因为系统日期更改而更新,您必须更新文档。视图索引器也不允许您传递用户定义的任何参数。在这种情况下,您应该发出数据并使用日期作为键的一部分来过滤视图查询。我猜SQL索引的行为也是一样的。你无法预测这个文档究竟何时会被编入索引,在你的例子中,当你的文档被编入索引时,你是冻结​​的时间戳,甚至不是它被更改的时间