如何使用rethinkdb javascript驱动程序更新嵌套数组

时间:2015-07-20 20:24:16

标签: javascript rethinkdb

我已经检查了其他相关问题,特别是this one。但是,由于回答了这一点,似乎重新考虑了对嵌套字段has changed的处理。

我正在尝试修改嵌套数组'amy'和'joe':

{
    "id":  "blah" ,
    "schedules": {
        "amy": ['some', 'stuff', 'here'],
        "joe": ['more', 'stuff', 'here']
    }
}

我尝试了各种不同的方法,但是我无法通过一次调用数据库来实现它。相反,我必须使用一个调用来获取现有数组:

r.table('whatevs').get('blah').pluck({schedules: {amy: true}})

这给了我一些看起来像:

"schedules": {
    "amy": ['some', 'stuff', 'here']
}

所以我拿出scheduleles.amy然后修改数组......

r.table('whatevs').get('blah').update({schedules: {amy: [modified_array]}})...

我想要做的是使用.difference()和.append()通过单个查询修改数组。现在看来这是可能的,但无论我尝试什么语法,它都会被拒绝。

1 个答案:

答案 0 :(得分:4)

如果你想更新一个数组的单个键,你可以这样做:

r.table('whateves').get('blah').update(function(row) {
  return {schedules: {amy: row('schedules')('amy').append('new_value')}};
});