繁体   English   中英

如何仅在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 ,它将删除dup元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM