我正在使用http api来查询ravendb(所以LINQ查询不是我问题的解决方案)。我的产品文档如下所示:
{
"editDate": "2012-08-29T15:00:00.846Z"
}
我有索引:
from doc in docs.Product
select new { doc.editDate }
我想查询特定日期和时间之前的所有文档。我可以使用以下语法查询 DATE:
editDate: [NULL TO 2012-09-17]
但是我也不知道如何查询时间部分。有什么想法吗?
您可以使用以下命令进行查询:
editDate: [NULL TO 2012-09-17T15:00:00.846Z]
如果您关心其中的一部分,请使用:
editDate: [NULL TO 2012-09-17T15:00]
请注意,您可能必须转义查询的某些部分,如下所示:
editDate: [NULL TO 2012-09-17T15:00]
为此,您还需要确保对字段进行分析。在 Raven Studio - 添加字段 -> editDate 中,并将"索引"设置为"已分析"。
解决此问题的一种方法是将值存储为自 unix 纪元以来的秒数,而不是日期。
这会产生一个可以轻松比较的数字。
我正在使用javascript和moment js库:
{
"editDate": "2012-08-29T15:00:00.846Z",
"editDateUnix": moment("2012-08-29T15:00:00.846Z").unix()
}
我的任何索引:
from doc in docs.Product
select new { doc.editDate, doc.editDateUnix }
和我的 Lucene 查询:
"editDate: [NULL TO "+moment("2012-09-17").unix()+"]"