微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 RethinkDB

如何解决在 RethinkDB

目前正在尝试通过使用 RethinkDB解决问题,使用 .lt() 查找具有小于给定值的 createdAt 日期键的对象。

以下查询.filter().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() 的第一个查询按预期工作,唯一的问题是它没有使用我创建的 secondary index

有没有什么办法可以像 .lt() 一样使用 .between() 的二级索引,或者以某种方式与 .filter() 一起使用?

文档没有提到类似的东西。任何帮助表示赞赏!

解决方法

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

相同的行为

https://rethinkdb.com/api/javascript/between

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。