我检查了其他相关问题,特别是 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']
}

所以我拉出 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')}};
});

关于javascript - 如何使用 rethinkdb javascript 驱动程序更新嵌套数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31525692/

10-12 12:31
查看更多