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

Couchbase文档日期搜索-DateTime.Now(),couchbase,Couchbase,我有一个CB文档,它有两个日期,一个开始日期和一个结束日期。比如说,产品的价格折扣。从今天开始,到下周五结束,享受九折优惠。我怎样才能从CB处获得今天有有效折扣的所有文件 我提出了一个观点,其中包含以下内容: var dt = new Date(); 这就是今天的日期。然后我可以做一个简单的 if(doc.FromDate < dt && doc.ToDate > dt){ emit([ ..... ]); if(doc.FromDatedt){emit([…])

我有一个CB文档,它有两个日期,一个开始日期和一个结束日期。比如说,产品的价格折扣。从今天开始,到下周五结束,享受九折优惠。我怎样才能从CB处获得今天有有效折扣的所有文件

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

var dt = new Date();
这就是今天的日期。然后我可以做一个简单的

if(doc.FromDate < dt && doc.ToDate > dt){ emit([ ..... ]);
if(doc.FromDatedt){emit([…]);
这会按照我的要求过滤文档。但是

问题

这是重新查看和更新索引的好方法吗?索引是否会因为日期更改而每天更新?只是想了解CB在这方面的工作

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

干杯

罗宾


注意:请注意,问题不是这样或这样的,索引不会因为系统日期更改而更新,您必须更新文档。此外,view indexer不允许您传递用户定义的任何参数。在这种情况下,您应该发出数据并使用日期作为键的一部分,以便在查看查询时进行筛选。我猜samSQL索引的e行为。您无法准确预测此文档何时将被索引,在您的示例中,您正在冻结文档被索引时的时间戳,甚至不是它被更改的时间

  • map()函数用于在磁盘上创建/更新索引,而这发生在文档保存到磁盘上的“之后”。这就是为什么在map reduce中使用date.now()没有真正意义的原因

  • 因此,您将要做的是发出日期,例如emit(dateToArray(doc.startDate))

  • 然后,在查询视图(索引)时,可以使用startkey和endkey执行范围查询

&开始键=[2013,4,16]和结束键=[2013,4,24]


嘿,谢谢你的回复。我还是有点困惑。我怎么才能得到日期“范围”包括今天的文档?我不能使用开始和结束键,因为今天不一定与“开始”和“结束”日期匹配。所以你在这方面的建议不行得通?嘿,谢谢。是的,我完全忘记了日期。现在这是“静态的”。我的错。!我想唯一的方法是在emit-->emit[(doc.from,doc.to),null]中有两个值。我可以使用的“最小”(过去最多)日期是什么。例如,“from date”可以是昨天或之前的任何日期。我需要今天的日期>=from date的所有记录。我无法传递[null,2013/4/5]因为空值将使我一切正常,并忽略结束键?按照从左到右的原则重新设置键。不确定是否理解问题,但您使用的日期只是Javascript日期,因此您可以使用此处定义的日期: