现在我有一个小问题:
我想使用地理空间命令(如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
在最后