如何解决在 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.minval
和 r.maxval
作为边界,它们分别代表“小于任何索引键”和“大于任何索引键”。例如,如果您使用 r.minval
作为下键,则 between 将返回主键(或索引)小于指定上键的所有文档。
r.db("databasename")
.table("tablename")
.between(r.minval,new Date(),{ index: "createdAt" })
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。