我使用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]
然而,我无法弄清楚如何查询时间组件。 有什么想法吗?
答案 0 :(得分:5)
您可以使用以下方式查询:
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,并将Indexing设置为Analyzed。
答案 1 :(得分:-1)
解决此问题的一种方法是将值存储为日期,而不是自unix时代以来的秒数。
这会产生一个可以轻松比较的数字。
我正在使用javascript和片刻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()+"]"