3

如果数组存在,我们应该如何将项目附加到数组,或者创建一个数组并插入到它。

我尝试了合并命令,但不允许合并数组,只能替换它们。

r.db('testdb').table('users').get('27e55a4a-a6f8-4ec9-bd02-f55f206700ff').merge({ 'hobbies':['Reading'] })

我进一步尝试传递一个函数,但似乎不起作用:

r.db('testdb').table('users').get('27e55a4a-a6f8-4ec9-bd02-f55f206700ff').merge(function(user) {
  return r.branch(user('hobbies').eq(null),
                  { 'hobbies' : ['Reading'] }
                 user('hobbies').append('Reading'))
});

考虑以下文档结构:

{
"email": email.123@gmail.com, »
"id":  "27e55a4a-a6f8-4ec9-bd02-f55f206700ff" ,
"image": https://lh4.googleusercontent.com/-O4ZXcLRpkHE/AAArAAAAAAAI/AdAAAAAAALMM/Fq968TTkd88Y/photo.jpg?sz=50, »
"name":  "John Doe" 
}

如果我想将爱好添加为数组,我应该怎么做。无论爱好数组是否存在,查询都必须有效。

4

2 回答 2

4

最惯用的方式是.update(function(user) { return {hobbies: user('hobbies').default([]).append('reading')}; })

于 2016-04-23T21:49:58.033 回答
0

终于我想通了。

r.db('testdb').table('users')
              .get("27e55a4a-a6f8-4ec9-bd02-f55f206700ff")
              .update(function(user){
                  return r.branch(user.hasFields('hobbies'), 
                       { hobbies: user('hobbies').append('reading')},
                       { hobbies : ['reading']}
                       )})
于 2016-04-23T19:35:02.997 回答