如果数组存在,我们应该如何将项附加到数组,或者创建数组并插入数组。
我尝试了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"
}
如果我想将爱好添加为数组,我应该怎么做。如果业余爱好数组存在与否,则查询必须同时工作。
答案 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']}
)})