如何使用 rethinkdb javascript 驱动程序更新嵌套数组
How to update nested array using rethinkdb javascript driver
我检查了其他相关问题,特别是 this one. But since that was answered it seems like rethink's handling of nested fields 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']
}
所以我拉出schedules.amy然后修改数组...
r.table('whatevs').get('blah').update({schedules: {amy: [modified_array]}})...
我想做的是使用 .difference() 和 .append() 通过单个查询就地修改数组。这似乎现在是可能的,但无论我尝试什么语法,它都会被拒绝。
如果您想更新作为数组的单个键,您可以这样做:
r.table('whateves').get('blah').update(function(row) {
return {schedules: {amy: row('schedules')('amy').append('new_value')}};
});
我检查了其他相关问题,特别是 this one. But since that was answered it seems like rethink's handling of nested fields 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']
}
所以我拉出schedules.amy然后修改数组...
r.table('whatevs').get('blah').update({schedules: {amy: [modified_array]}})...
我想做的是使用 .difference() 和 .append() 通过单个查询就地修改数组。这似乎现在是可能的,但无论我尝试什么语法,它都会被拒绝。
如果您想更新作为数组的单个键,您可以这样做:
r.table('whateves').get('blah').update(function(row) {
return {schedules: {amy: row('schedules')('amy').append('new_value')}};
});