我想在一个类似于以下内容的记录中向数组追加一个值:
{
_id: 'foo',
cols: [
'abc123',
'123abc'
]
}
此字段可能不存在,需要在追加之前创建。如果值已存在于数组中,我也不想追加到数组。到目前为止,我有以下内容满足除了不添加重复条目的最后要求之外的所有要求。
r.table('users')
.get(userId)
.update({
cols: r.row('cols').default([]).append(uuid)
})
感谢任何帮助,谢谢!
答案 0 :(得分: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
的问题是确保返回一组。因此,如果您有意将重复元素放在原始cols
中,则会删除重复元素。