2

目前试图通过使用RethinkDB来解决问题,createdAt以使用.lt().

以下查询适用于.filter()and .lt()

r.db("databasename")
  .table("tablename")
  .filter(r.row("createdAt").lt(new Date()))

使用.between()我可以index按预期传递:

r.db("databasename")
  .table("tablename")
  .between(new Date("2020-01-01"), new Date(), { index: "createdAt" })

但是我仍然需要传递一个较低的值 ( 2020-01-01) 以及不一样.lt()的不一样。

问题:

即使第一个查询使用.filter().lt()按预期工作,唯一的问题是它没有使用我创建的二级索引。

有什么方法可以使用.lt()类似.between()或以某种方式使用的二级索引.filter()

该文档没有提到类似的内容。任何帮助表示赞赏!

4

1 回答 1

3

filter不使用二级索引,between应该是这里的最佳选择。只需尝试使用r.minval来定义较低的键,那么它应该具有相同的行为.lt(...)

https://rethinkdb.com/api/javascript/之间

您还可以使用特殊常量r.minvalr.maxval边界,分别表示“小于任何索引键”和“大于任何索引键”。例如,如果您r.minval用作下键,那么 between 将返回所有主键(或索引)小于指定上键的文档。

r.db("databasename")
  .table("tablename")
  .between(r.minval, new Date(), { index: "createdAt" })
于 2021-01-16T16:50:45.313 回答