【问题标题】:Using geospatial commands in rethinkdb with changefeed在 rethinkdb 中使用带有 changefeed 的地理空间命令
【发布时间】:2015-05-30 18:36:33
【问题描述】:

现在我有一个小问题:

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

RqlRuntimeError: 无法在急切的流中调用changes:r.db("Test").table("Message").getIntersecting(r.circle([-117.220406,32.719464], 10, {unit: 'mi'}), {index: 'loc'})).changes()

最大的问题是:我可以将 getIntersecting 与 changes() 一起使用(顺便说一句,在文档中找不到与此相关的任何内容......)还是我必须放弃使用 rethinkdb 地理空间功能的想法而只使用change() 获取所有添加或更改的文档并在 rethinkdb 之外执行地理空间工作?

【问题讨论】:

    标签: geospatial rethinkdb


    【解决方案1】:

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

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

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

    在未来,changefeeds 将更加广泛,您基本上可以编写任何以.changes 结尾的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      相关资源
      最近更新 更多