目前,Rethink API文档说get_nearest命令只对表有效。当然,我可以在之后过滤结果,但这似乎效率不高,而且当我想将结果限制在特定数量的项目时,需要按距离对所有项目进行排序。
是否有一种方法,我忽略了从一个查询中过滤列表中获得最接近的结果?
它只在表上工作的原因是强制索引。索引只作用于表级别。考虑一下,这是有道理的,因为这是一个昂贵的查询。
但是,如果您有一个过滤列表,您能做的最好的事情就是使用distance
并按其结果排序。
这样就可以了:
r.db('db').table('table')
.filter(function_to_filter)
.orderBy(function(doc) {
return r.distance('your_point_to_compare', doc('point'))
})