我已经检查了其他相关问题,特别是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()通过单个查询修改数组。现在看来这是可能的,但无论我尝试什么语法,它都会被拒绝。
答案 0 :(得分:4)
如果你想更新一个数组的单个键,你可以这样做:
r.table('whateves').get('blah').update(function(row) {
return {schedules: {amy: row('schedules')('amy').append('new_value')}};
});