2

次のようなレコードの配列に値を追加したいと思います。

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

このフィールドが存在しない可能性があり、追加する前に作成する必要があります。また、値が配列に既に存在する場合、配列に追加したくありません。これまでのところ、重複するエントリを追加しないという最後の要件を除くすべてを満たす次のものがあります。

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

どんな助けでも感謝します、ありがとう!

4

1 に答える 1

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は、セットを確実に返すことです。したがって、故意に original に重複要素を配置した場合、重複要素colsは削除されます。

于 2016-05-06T09:09:08.197 に答える