在rethinkdb中用changefeed使用地理空间命令



现在我有一个小问题:

我想使用地理空间命令(如getIntersecting)与rethinkdb的changefeed功能一起使用,但我总是得到:

RqlRuntimeError: Cannot call changes on eager stream in: r.b b("Test").table("Message").getIntersecting(r.r circle([-117.220406,32.719464], 10, {unit: 'mi'}), {index: 'loc'})).changes()

最大的问题是:我可以使用getIntersecting with the changes()(在文档中找不到任何相关的东西…),或者我必须放弃使用rethinkdb地理空间特征的想法,只是使用change()来获得所有添加或更改的文档,并在rethinkdb之外做地理空间的东西?

您不能将.getIntersecting.changes一起使用,但您可以通过在 .changes之后添加filter 来编写基本相同的查询,该查询检查loc是否在圆圈内。虽然.changes限制了您可以在.changes之前编写的内容,但您基本上可以在.changes之后编写任何查询,它都可以工作。

r.table('Message')
  .changes()
  .filter(
    r.circle([-117.220406,32.719464], 10, {unit: 'mi'})
     .intersects(r.row('new_val')('loc'))
  )

基本上,每当表中有更改时,更新将被推送到changefeed,但它将被过滤掉。由于没有很多对地理空间和changfeeds的支持,所以这或多或少是您需要将两者集成的方式。

在未来,changefeeds将更广泛,你将能够编写基本上任何查询与.changes在最后

最新更新