如何在RethinkDB中将getall与orderby一起使用

什么

我想列出两个时间戳之间id = 1的记录,最后根据时间戳对其进行排序。

MySQL查询的东西:

Select * from test 
where (timestamp between 100099323 AND 1423699323) AND id=1 
order by timestamp

重新思考数据库中有超过500万个文档。

我尝试将index用于简单的mysql查询:

Select * from test where id=1 order by timestamp

和Rethinkdb查询是:

r.table('test').getAll(1, {index: 'id'}).orderBy({index: 'timestamp'})

但我得到错误:

RqlRuntimeError: Indexed order_by can only be performed on a TABLE or 
TABLE_SLICE in:
r.table("test").getAll(1, {index: "id"}).orderBy({index: "timestamp"})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

有什么建议吗?

Tryneus

RethinkDB不支持有效的索引交集(添加此索引的Github问题是#809),但是您可以通过为'id'和'timestamp'索引添加复合索引来有效地实现此查询。

但是,如果您的结果集足够小,则orderBy可以通过删除'index'optarg完全在内存中完成:

r.table("test").getAll(1, {index: "id"}).orderBy("timestamp")

为了对大型结果集有效地执行此操作,您将需要一个索引。假设您的“ id”和“ timestamp”索引直接对应于行中的字段,则添加索引应如下所示:

r.table("test").indexCreate("id_time",
                            function(row) {
                                return [row("id"), row("timestamp")];
                            })

要获取所有行id=1并按时间戳排序,您可以运行:

r.table("test").between([1], [2], {"index": "id_time"})
               .orderBy({"index": "id_time"})

另外,回到您发布的原始查询,您可以id=1通过运行以下命令在两个时间戳之间进行查询

r.table("test").between([1, <time 1>], [1, <time 2>], {"index": "id_time"})
               .orderBy({"index": "id_time"})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ruby中将wget与`&`一起使用

来自分类Dev

如何在.NET中将SQLite与NLog一起使用

来自分类Dev

如何在Android中将Netcipher与Retrofit一起使用?

来自分类Dev

如何在Swift中将UILongPressGestureRecognizer与UICollectionViewCell一起使用?

来自分类Dev

如何在Python中将if语句与数组一起使用?

来自分类Dev

如何在bash中将`tail`与`timeout`一起使用

来自分类Dev

如何在orderby子句中将LINQ与动态参数一起使用

来自分类Dev

如何在yacc中将yylval与union一起使用

来自分类Dev

如何在HTML中将flex与列表一起使用?

来自分类Dev

如何在SwiftUI中将ObservedObject与DatePicker一起使用?

来自分类Dev

如何在React中将PropTypes与Typescript一起使用

来自分类Dev

如何在PostgreSQL中将COALESCE与INTERVAL一起使用?

来自分类Dev

如何在Android中将TextInputLayout与EditText一起使用

来自分类Dev

如何在PL / pgSQL函数中将WITH与IF一起使用

来自分类Dev

如何在mongodb中将查找与$ push一起使用

来自分类Dev

如何在Rails中将jQuery与Sunspot一起使用?

来自分类Dev

如何在grails中将ilike与Integer一起使用

来自分类Dev

如何在OSX中将OpenCV与python一起使用?

来自分类Dev

如何在RSpec中将`allow`与`let`一起使用

来自分类Dev

如何在Netty中将EventExecutorGroup与NioDatagramChannel一起使用?

来自分类Dev

如何在awk中将模式与变量一起使用

来自分类Dev

如何在Primefaces中将contextMenu与ContentFlow一起使用

来自分类Dev

如何在bash中将`tail`与`timeout`一起使用

来自分类Dev

如何在MATLAB中将pcg与函数一起使用

来自分类Dev

如何在 Windows 中将 curl 与 xampp 一起使用?

来自分类Dev

如何在 Angular 中将 ngFor 与 Observable 一起使用?

来自分类Dev

如何在 C 中将 EOF 与 fgets() 一起使用

来自分类Dev

如何在 Laravel 中将 orderBy() 与模型的方法一起使用

来自分类Dev

如何在java Android中将IF与Button一起使用?

Related 相关文章

  1. 1

    如何在ruby中将wget与`&`一起使用

  2. 2

    如何在.NET中将SQLite与NLog一起使用

  3. 3

    如何在Android中将Netcipher与Retrofit一起使用?

  4. 4

    如何在Swift中将UILongPressGestureRecognizer与UICollectionViewCell一起使用?

  5. 5

    如何在Python中将if语句与数组一起使用?

  6. 6

    如何在bash中将`tail`与`timeout`一起使用

  7. 7

    如何在orderby子句中将LINQ与动态参数一起使用

  8. 8

    如何在yacc中将yylval与union一起使用

  9. 9

    如何在HTML中将flex与列表一起使用?

  10. 10

    如何在SwiftUI中将ObservedObject与DatePicker一起使用?

  11. 11

    如何在React中将PropTypes与Typescript一起使用

  12. 12

    如何在PostgreSQL中将COALESCE与INTERVAL一起使用?

  13. 13

    如何在Android中将TextInputLayout与EditText一起使用

  14. 14

    如何在PL / pgSQL函数中将WITH与IF一起使用

  15. 15

    如何在mongodb中将查找与$ push一起使用

  16. 16

    如何在Rails中将jQuery与Sunspot一起使用?

  17. 17

    如何在grails中将ilike与Integer一起使用

  18. 18

    如何在OSX中将OpenCV与python一起使用?

  19. 19

    如何在RSpec中将`allow`与`let`一起使用

  20. 20

    如何在Netty中将EventExecutorGroup与NioDatagramChannel一起使用?

  21. 21

    如何在awk中将模式与变量一起使用

  22. 22

    如何在Primefaces中将contextMenu与ContentFlow一起使用

  23. 23

    如何在bash中将`tail`与`timeout`一起使用

  24. 24

    如何在MATLAB中将pcg与函数一起使用

  25. 25

    如何在 Windows 中将 curl 与 xampp 一起使用?

  26. 26

    如何在 Angular 中将 ngFor 与 Observable 一起使用?

  27. 27

    如何在 C 中将 EOF 与 fgets() 一起使用

  28. 28

    如何在 Laravel 中将 orderBy() 与模型的方法一起使用

  29. 29

    如何在java Android中将IF与Button一起使用?

热门标签

归档