5

我正在使用 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]

但是我也不知道如何查询时间组件。有任何想法吗?

4

2 回答 2

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 - 添加字段 -> 编辑日期,并将索引设置为已分析。

于 2012-09-20T11:04:46.020 回答
-1

解决此问题的一种方法是将值存储为自 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()+"]"
于 2012-09-18T08:45:39.230 回答