簡體   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