2

我想将一个值附加到类似于以下内容的记录中的数组:

{
  _id: 'foo',
  cols: [
    'abc123',
    '123abc'
  ]
}

该字段可能不存在,需要在追加之前创建。如果数组中已经存在该值,我也不想追加到数组中。到目前为止,我有以下满足所有但不添加重复条目的最后一个要求。

r.table('users')
 .get(userId)
 .update({
   cols: r.row('cols').default([]).append(uuid)
 }) 

任何帮助表示赞赏,谢谢!

4

1 回答 1

3

你有几个解决方案。

r.table('users')
 .get(userId)
 .update({
   cols: r.branch(r.row('cols').default([]).contains(uuid),
                   r.row('cols'),
                   r.row('cols').default([]).append(uuid))
 }) 

或者我们可以使用setInsert@char 建议

r.table('users')
 .get(userId)
 .update({
   cols: r.row('cols').default([]).setInsert(uuid))
 }) 

问题setInsert在于它确保返回一组。因此,如果您有意将重复元素放入 original cols,它将删除 dup 元素。

于 2016-05-06T09:09:08.197 回答