2016-11-28 3 views
1

У меня есть эти запросы:Couchbase N1qlQuery: используйте значение ключа из выбора

select otherDocKey from bucket use keys '1234' 
update bucket use keys 'hear I need the result of the first query' set ... 

Я хочу сделать что-то вроде этого:

update bucket use keys (select otherDocKey from bucket use keys '1234') set kuku = 3 

но ответ я получаю:

[ { "code": 5030, "msg": "Missing or invalid primary key map[otherDocKey:\"56443\"] of type map[string]interface {}." } ]

есть ли способ сделать это в одном запросе?

Я использую couchbase версии 4.5

+0

[This] (http://stackoverflow.com/questions/31298550/using-n1ql-with-document-keys) выглядит очень близко к тому, что вам нужно – summerbulb

+0

@summerbulb это выбор, соединяя его по-разному. Я не могу присоединиться к обновлению. – igreen

ответ

1

Проблема с запросом, что вложенный подзапрос возвращает результат JSON. Т.е., запрос:

select otherDocKey from bucket use keys '1234'

будет возвращать результат, который выглядит как:

{"otherDocKey":"This_is_the_key_for_the_other_doc"} 

Но вы не хотите, JSON, вы просто хотите получить значение из JSON. Для этого вам нужно использовать «select raw». НАПРИМЕР,

select raw otherDocKey from bucket use keys '1234' 

Это должно дать вам результат, который выглядит как:

["This_is_the_key_for_the_other_doc"] 

Когда подзапрос возвращает такой результат, «использовать ключи» должны работать должным образом.

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