如何在 RethinkDB 中使用 getall 和 orderby

2023-11-24

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

Mysql查询一些东西:

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

Rethink 数据库中有超过 500 万份文档。

我尝试使用索引进行简单的 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"})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

有什么建议吗?


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"})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 RethinkDB 中使用 getall 和 orderby 的相关文章

  • 序列化或内爆

    我需要在数据库中存储大量二维数组 但不知道该使用什么 serialize or implode 所以我做了一些测试 找出哪一个运行得更快 并得出结论 serialize Execution times 1 000 000 Serialize
  • 所有者无法推送到组织存储库

    今天 我已将我的私人 github 存储库移至新创建的组织 我是该组织的所有者 我已将远程来源更改为 电子邮件受保护 组织 repo git 我无法推送到远程 因为我收到错误消息 错误 MyGithubUsername 对organizat
  • 两个日期之间的天数 C++

    我看到了 C Java 的示例 但对于 C 我找不到计算两个日期之间有多少天的解决方案 例如2012年1月24日至2013年1月8日 Thanks 这是一种方法 include
  • 使用jquery将外部html文件加载到div

    我正在使用一个有很多工具提示的 html 页面 每个工具提示都有一个画廊 因为不可能使用具有相同 id 的多个画廊 我计划为画廊创建 6 个不同的 html 文件 然后将画廊加载到我的默认页面中 我需要为每个 div 计算 html 页面

随机推荐

  • 如何将图片打包到jar文件中

    我制作了一个 java 应用程序 并将所有类捆绑在 jar 文件中 当我从 netbeans 运行该项目时 我的应用程序运行成功 但当我将 jar 文件放在另一个位置并从那里运行时 我没有得到我的应用程序使用的图标 在代码中 我从项目文件夹
  • iOS 顶部的自定义可滚动标签栏

    我有一个关于在 iOS 应用程序中在屏幕顶部实现自定义可滚动选项卡栏的问题 我正在寻找一个与 vevo 应用程序非常相似的选项卡栏 如下图所示 我已经查看了这个滚动选项卡栏 https github com vermontlawyer JF
  • node.js 调用外部 exe 并等待输出

    我只想从nodejs App 调用外部exe 这个外部 exe 进行一些计算并返回 nodejs App 所需的输出 但我不知道如何在nodejs和外部exe之间建立连接 所以我的问题是 如何从 Nodejs 中正确调用具有特定参数的外部
  • 如何通过node中的mongojs将.json文档插入mongo服务器

    我是 NodeJS 和 MongoDB 的新手 我有这个代码 var fs require fs var mongojs require mongojs var db mongojs monitor configurations fs re
  • numpy 数组中的轴索引如何? [复制]

    这个问题在这里已经有答案了 From Numpy 的教程 轴可以用整数索引 例如0用于列 1是用于行 但我不明白为什么它们以这种方式索引 处理多维数组时如何计算每个轴的索引 根据定义 维度的轴号是该维度在数组中的索引shape 它也是在索引
  • 如何检查日期是否超过7天[重复]

    这个问题在这里已经有答案了 我想检查两个日期是否超过一周 例如检查两个日期是否有 7 天 此时数据范围应仅在一周内 7 天 我尝试过这样的事情 import java text ParseException import java text
  • 使用Python对字符串格式的数字进行排序[重复]

    这个问题在这里已经有答案了 我有一个列表 其中包含一些字符串中的章节号 当我使用键功能对键进行排序时 它给出了错误的结果 keys 1 1 1 2 2 1 10 1 keys sort print keys 1 1 1 2 10 1 2 1
  • LINQ 中长类型的 Sum 方法

    我怎样才能获得长类型的一些项目的总和 这是我的代码 using gEn myEntities new gEn var load from items in myEntities Orders select items PayO Defaul
  • 使 Adsense 响应式

    我是网站所有者 目前使用 Adsense 来获利 我决定将我的网站设计更改为响应式设计 以便网站可以在各种屏幕尺寸上适当地呈现自己 但不幸的是 Adsense 在这方面不太灵活 当屏幕宽度变得太小时 简单地隐藏大型桌面广告相对简单 但这对收
  • 加入线程时是否需要内存屏障?

    如果线程 A 生成另一个线程 B 其唯一目的是写入变量 V 然后等待它终止 是否需要内存屏障来确保线程 A 上的 V 的后续读取是最新的 我不确定终止 连接操作中是否存在任何隐式障碍 导致它们变得多余 这是一个例子 public stati
  • git推送没有失败但是不起作用

    我正在使用 Git 但遇到了几个问题 我可以推动 我的同事可以拉动 反之亦然 但是远程版本不是最新的 如果我在 html 中编写测试 除了本地版本之外没有人能看到它 我认为它可能来自遥控器上的分支 不是吗 编辑1 我会尝试更具体 我有一个位
  • 在 Android 应用程序中显示饼图 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想在我的 Android 应用程序中显示饼图 如下所示 那么关于这个的任何想法我怎样才能实现这一目标呢 如果有任何图书馆 请推荐我 预先感谢 为了显示不同类型的图表 您可以使用 A
  • 对象已完成但尚未收集垃圾时的弱引用行为

    这是一个关于 C NET 中对象终结和收集的学术问题 背景阅读是 C 语言规范 自动内存管理 的第 3 9 节 当没有对对象的显式引用时 它可能会被垃圾收集 它变得 有资格被销毁 在将来的某个时刻 例如 如果强制垃圾收集 将运行对象的析构函
  • 如何编写(自动)仅应用于特定文件夹的 vimrc 文件

    假设我有一个项目位于名为 bin 的文件夹中 并且我希望在编辑项目文件夹内的任何文件时自动加载一些特定的 vim 配置 我怎样才能做到这一点 我认为你想要的是一个自动命令 也许是这样的 autocmd BufRead BufNewFile
  • SQL Server 2008 中的 Do while 循环

    有没有什么方法可以实现do whileSQL Server 2008 中的循环 我不确定 MS SQL Server 2008 中的 DO WHILE 但您可以更改 WHILE 循环逻辑 以便像 DO WHILE 循环一样使用 示例取自此处
  • 构建具有离线功能的 ASP.Net Web 应用程序

    我正在构建一个 asp net 3 5 Web 应用程序 想知道您是否知道我可以通过什么方式来实现它 以便有一些离线功能 这是必要的 因为人们将能够在其设备上 安装 网络应用程序 例如 使用 iPhone 上的 添加到主屏幕 功能 然后在离
  • 移动浏览器是否通过 HTML5 音频标签发送 httpOnly cookie?

    我尝试通过 html5 音频标签播放一些 mp3 文件 对于桌面来说 这非常有效 使用 Chrome 但是当涉及到移动浏览器 还有 Chrome 适用于 Android 时 似乎存在一些困难 我用一些密码保护流 因此流服务器需要找到一个特殊
  • 检查cygwin中符号链接类型的差异

    我使用 winsymlinks native 和 cygwin 符号链接 具体取决于 Windows 是否需要并且可以跟踪链接 我想要一种 cygwin 的方式来查看它是什么类型的符号链接 因为它只看到符号链接 但 DOS 看到差异 我需要
  • Ruby:如何编写 bang 方法,例如地图?

    我想编写一些新的 Array 方法来更改调用对象 如下所示 a 1 2 3 4 a map e e 1 a 2 3 4 5 但我不知道如何做到这一点 我想我需要一个新大脑 所以 我想要这样的东西 class Array def stuff
  • 如何在 RethinkDB 中使用 getall 和 orderby

    我想列出两个时间戳之间 id 1 的记录 最后根据时间戳对它们进行排序 Mysql查询一些东西 Select from test where timestamp between 100099323 AND 1423699323 AND id