RethinkDB - 将getNearest()与eqJoin()一起使用

时间:2014-12-13 23:48:23

标签: javascript database rethinkdb

这可以按预期工作,全部"检查"在一个地方

r.table('places').eqJoin('checkinId', r.table('checkins'))

这可以按预期工作,让所有位置都接近一点。

r.table('places').getNearest(r.point(-122.1634581999,47.7542651), { index : 'places.location' })

但是这会返回一个空数组,获取一个点附近的所有位置,并加入check ins。

r.table('places').getNearest(r.point(-122.1634581999,47.7542651), { index : 'places.location' }).eqJoin('checkinId', r.table('checkins'))

我应该以不同的方式加入第二张桌子吗?

1 个答案:

答案 0 :(得分:4)

我认为getNearest会返回格式{distance: <number>, doc: <doc>}的流,因此您可能需要使用checkinId替换eqJoin中的r.row("doc")("checkinId")

类似

r.table("places").getNearest(...).eqJoin(r.row("doc")("checkinId"), r.table("checkins"))

返回任何内容的原因是因为eqJoin的行为类似于SQL内部联接,这意味着如果找不到匹配项,则不会返回左侧文档。