我们如何在RethinkDb中使用过滤器后使用getNearest函数?

时间:2017-03-10 04:04:09

标签: javascript node.js database rethinkdb

我有一个与rethinkdb有关的问题。我正在查询获取特定点附近的最近位置并且它正常但问题是要先过滤结果然后应用getNearest但getNearest与表一起工作 任何人都可以在这里指导我

这是代码,它工作正常。但我想首先使用过滤后的结果,然后使用GetNearest Location。

var point = r.point(73.07328600000005,33.633473);
 r.db('DB').table('infoCenter').getNearest(point,
   {index: 'location', unit: 'km', maxDist:1, maxResults: 2000}
   )
 .filter(function(kk) {
   return  kk('doc')('Deleted').default(false).eq(false)

   })

上面的代码工作正常但我想要做的是先过滤结果然后使用getNearest方法。和getNearest方法仅适用于表。

提前致谢

1 个答案:

答案 0 :(得分:1)

getNearest之后无法执行filter等索引操作。

您可以使用带orderBy的无索引distance,例如:

.orderBy(ic => ic('location').distance(point))

或者,如果您想保留unitmaxDistmaxResults,请执行以下操作:

.merge(ic => {distance: ic('location').distance(point, {unit: 'km'})})
.filter(ic => ic('distance').lt(1))
.orderBy('distance')
.limit(2000)