在rethinkdb文档

时间:2016-04-23 19:01:52

标签: rethinkdb rethinkdb-javascript

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

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

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'))
});

考虑以下doc结构:

{
"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" 
}

如果我想将爱好添加为数组,我应该怎么做。如果业余爱好数组存在与否,则查询必须同时工作。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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']}
                       )})