有没有办法用RethinkDB将一个点附加到一行

时间:2015-06-08 14:04:21

标签: node.js rethinkdb

假设我正在使用与文档

中描述的语法相同的语法创建地理空间行对象
r.table('geo').insert({
    id: 101,
    route: r.line([-122.423246,37.779388], [-121.886420,37.329898])
}).run(conn, callback);

是否有一种方法可以在不使用原子(读/写)模式的情况下将一个点附加到此行

1 个答案:

答案 0 :(得分:1)

如果您已将文档插入数据库并想要向该文档添加一个点,则可以使用udpate命令和toGeojson命令来执行此操作。

这是看起来的样子:

r.table('30711279').get(101)
  .update(function (row)  {
    return {
      'route': r.line(r.args(
        row('route').toGeojson()('coordinates')
            .append([ -120, 85 ])
      ))
    }
  }, {nonAtomic: true })

基本上,我在route属性中创建了一个新行。我将所有旧点作为数组传递,然后附加经度和纬度的新元组。

如果您还没有将文档插入数据库并希望在该行添加一个点,那么您可以这样做:

var arrayOfPoints = [[-122.423246,37.779388], [-121.886420,37.329898]];
var point = [ -120, 57 ];

r.table('geo').insert({
    id: 101,
    route: r.line(r.args(arrayOfPoints.concat(point)))
}).run(conn, callback);