2016-05-06 82 views
2

價值,我想一個值追加到記錄數組看起來類似於以下內容:如何追加到數組只有當它不包含rethinkDB

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

這是可能的,這字段不存在,並且需要在追加之前創建。如果該值已經存在於數組中,我也不想追加到數組中。到目前爲止,我有以下滿足所有條件,但不添加重複條目的最後一項要求。

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

任何幫助表示讚賞,謝謝!

+2

您可以嘗試使用'''setInsert''' https://www.rethinkdb.com/api/javascript/set_insert/ 鮮明據我所知定義應該有沒有重複 – char

回答

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中,它將刪除dup元素。

+0

謝謝!我結束了使用setInsert,因爲這是我需要的功能。我必須進一步研究'branch'方法。你知道其中的一個是否更高性能? – hatch

相關問題