在带有 changefeed 的 rethinkdb 中使用地理空间命令
Using geospatial commands in rethinkdb with changefeed
现在有个小问题:
我想将地理空间命令(如 getIntersecting)与 rethinkdb 的 changefeed 功能一起使用,但我总是得到:
RqlRuntimeError: Cannot call changes
on an eager stream in: r.db("Test").table("Message").getIntersecting(r.circle([-117.220406,32.719464], 10, {unit: 'mi'}), {index: 'loc'})).changes()
最大的问题是:我可以将 getIntersecting 与 changes() 一起使用吗(在文档中找不到与此相关的任何内容……)还是我必须放弃使用 rethinkdb 地理空间功能和只需使用 change() 来获取所有添加或更改的文档,并在 rethinkdb 之外进行地理空间处理?
您不能将 .getIntersecting
与 .changes
一起使用,但您可以通过添加 filter
after [ 来编写基本相同的查询=12=] 检查 loc
是否在圆圈内。虽然 .changes
限制了您可以在 .changes
之前编写的内容,但您基本上可以在 .changes
之后编写任何查询,并且它会起作用。
r.table('Message')
.changes()
.filter(
r.circle([-117.220406,32.719464], 10, {unit: 'mi'})
.intersects(r.row('new_val')('loc'))
)
基本上,每次 table 发生变化时,更新都会推送到变更源,但会被过滤掉。由于对地理空间和 changfeeds 的支持不多,这或多或少是您需要将两者集成的方式。
将来,changefeeds 将更加广泛,您基本上可以编写任何以 .changes
结尾的查询。
现在有个小问题:
我想将地理空间命令(如 getIntersecting)与 rethinkdb 的 changefeed 功能一起使用,但我总是得到:
RqlRuntimeError: Cannot call
changes
on an eager stream in: r.db("Test").table("Message").getIntersecting(r.circle([-117.220406,32.719464], 10, {unit: 'mi'}), {index: 'loc'})).changes()
最大的问题是:我可以将 getIntersecting 与 changes() 一起使用吗(在文档中找不到与此相关的任何内容……)还是我必须放弃使用 rethinkdb 地理空间功能和只需使用 change() 来获取所有添加或更改的文档,并在 rethinkdb 之外进行地理空间处理?
您不能将 .getIntersecting
与 .changes
一起使用,但您可以通过添加 filter
after [ 来编写基本相同的查询=12=] 检查 loc
是否在圆圈内。虽然 .changes
限制了您可以在 .changes
之前编写的内容,但您基本上可以在 .changes
之后编写任何查询,并且它会起作用。
r.table('Message')
.changes()
.filter(
r.circle([-117.220406,32.719464], 10, {unit: 'mi'})
.intersects(r.row('new_val')('loc'))
)
基本上,每次 table 发生变化时,更新都会推送到变更源,但会被过滤掉。由于对地理空间和 changfeeds 的支持不多,这或多或少是您需要将两者集成的方式。
将来,changefeeds 将更加广泛,您基本上可以编写任何以 .changes
结尾的查询。