如何从特定日期获取最新文件?

How to get latest document from specific date?

我正在尝试从 CouchbaseN1QL 中的指定日期(变量)获取最新的文档(在一个非常大的数据库中(每个月 1.5 亿份文件)。某个日期的最新文档可以是任何时间(前一秒或上个月)。请注意,日期是在 Unix Epoch 中。这是文档的结构:

{
  "type" : "person",
  "id":"001",
  "name":"John Doe",
  "date":"1491199810.435"
}

我有日期索引:

CREATE INDEX `date` ON `mytable`(`date`) WITH { "defer_build"=true }

通常在我处理的Postgres中,我通常会这样做:

SELECT * WHERE date <="1491199813.000" ORDER BY date DESC LIMIT 1;

在 Postgres 中拥有日期索引只是以毫秒为单位的响应。

但是,Couchbase ORDER BY ... LIMIT 非常慢。在相同的硬件和相同的数据上需要几分钟。

当然有一种使用 Couchbase N1QL 从指定日期获取单个最新文档的有效方法,但我还找不到它。

你有什么想法吗?

创建负函数索引并像下面这样更改查询在 5.0.0 之前

CREATE INDEX `forex_dt` ON `forex`(-TONUMBER(`date`));
SELECT * FROM `forex` WHERE -TONUMBER(`date`) >= -1491199813.000 ORDER BY -TONUMBER(`date`) LIMIT 1;

在 5.0.0 中

CREATE INDEX `forex_dt` ON `forex`(`date` DESC);
SELECT * FROM `forex` WHERE `date` <= "1491199813.000" ORDER BY `date` DESC LIMIT 1;