过滤器orderby的RethinkDB索引

前端之家收集整理的这篇文章主要介绍了过滤器orderby的RethinkDB索引前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让我们说评论表具有以下结构:
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(因为所有键都有相同的作者.)这里的关键是每个表访问只能使用一个索引,所以我们需要将所有这些信息填入相同的指数.

猜你在找的MsSQL相关文章