2015-04-11 2 views
3

При наличии вложенного документа, как это:Couchbase N1QL: Обновление на вложенных документах

{ 
"blog": "testblog1", 
"user_id": 41, 
"comments": [ 
    { 
     "comment": "testcomment1", 
     "user_id": 883 
    }, 
    { 
     "comment": "testcomment2", 
     "user_id": 790 
    } 
    ] 
} 

может один сделать Update Работу с N1QL, чтобы добавить дополнительное поле в поддокумент?

Я хотел бы добавить поле "ranking" : "top comment" к поддокументу с комментарием testcomment2:

{ 
"blog": "testblog1", 
"user_id": 41, 
"comments": [ 
    { 
     "comment": "testcomment1", 
     "user_id": 883 
    }, 
    { 
     "comment": "testcomment2", 
     "user_id": 790, 
     "ranking" : "top comment" 
    } 
    ] 
} 

сайт Примечания: Следующее утверждение можно было бы добавить поле в корневом документ на коллекцию Блог:

UPDATE Blog SET rank = "top blog" WHERE blog = "testblog1"; 

ответ

9

Да, вы можете сделать следующее в N1QL:

UPDATE Блог
SET с. рейтинг = «верхний комментарий» для С комментариями КОГДА c.comment = «testcomment2» END
ГДЕ блог = «testblog1»

+0

Спасибо за ваш ответ, отлично работает – gehtmaguad

+0

, как получить доступ, если это вложенный массив в 4.0. x couchbase – gani

+0

Это решение не работает для меня при использовании более одного набора параметров. Например, если я устанавливаю c.ranking = «верхний комментарий», c.comment = «Победитель!», Он обновляет только 1 из ключей. O_o –

Смежные вопросы