如何仅在数组不包含 rethinkDB 值时附加到数组
How to append to array only if it doesn't contain value with rethinkDB
我想将一个值附加到类似于以下内容的记录中的数组:
{
_id: 'foo',
cols: [
'abc123',
'123abc'
]
}
该字段可能不存在,需要在追加之前创建。如果该值已存在于数组中,我也不想附加到数组。到目前为止,我有以下满足除不添加重复条目的最后要求之外的所有要求。
r.table('users')
.get(userId)
.update({
cols: r.row('cols').default([]).append(uuid)
})
感谢任何帮助,谢谢!
你有几个解决方案。
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
,它将删除重复元素。
我想将一个值附加到类似于以下内容的记录中的数组:
{
_id: 'foo',
cols: [
'abc123',
'123abc'
]
}
该字段可能不存在,需要在追加之前创建。如果该值已存在于数组中,我也不想附加到数组。到目前为止,我有以下满足除不添加重复条目的最后要求之外的所有要求。
r.table('users')
.get(userId)
.update({
cols: r.row('cols').default([]).append(uuid)
})
感谢任何帮助,谢谢!
你有几个解决方案。
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
,它将删除重复元素。