加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

过滤器orderby的RethinkDB索引

发布时间:2020-12-12 06:50:37 所属栏目:MsSql教程 来源:网络整理
导读:让我们说评论表具有以下结构: id | author | timestamp | body 我想使用索引有效地执行以下查询: r.table('comments').getAll("me",{index: "author"}).orderBy('timestamp').run(conn,callback) 我可以使用其他有效的方法吗? 看起来当前索引不支持表的过
让我们说评论表具有以下结构:
id | author | timestamp | body

我想使用索引有效地执行以下查询:

r.table('comments').getAll("me",{index: "author"}).orderBy('timestamp').run(conn,callback)

我可以使用其他有效的方法吗?

看起来当前索引不支持表的过滤结果.创建时间戳索引并将其作为提示添加到orderBy(‘timestamp’,{index:timestamp})时,我收到以下错误:

RqlRuntimeError: Indexed order_by can only be performed on a TABLE. in:

解决方法

这可以通过“author”和“timestamp”字段上的复合索引来完成.您可以像这样创建这样的索引:
r.table("comments").index_create("author_timestamp",lambda x: [x["author"],x["timestamp"]])

然后您可以使用它来执行查询,如下所示:

r.table("comments")
 .between(["me",r.minval],["me",r.maxval]
 .order_by(index="author_timestamp)

这两者之间的作用类似于原始查询中的get_all,因为它只获取具有作者“me”和任何时间戳的文档.然后我们对按时间戳排序的相同索引执行order_by(因为所有键都有相同的作者.)这里的关键是每个表访问只能使用一个索引,所以我们需要将所有这些信息填入相同的指数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读