#couchbase #n1ql
#couchbase #n1ql
Вопрос:
У меня есть следующая модель документа в моей базе данных couchbase
{
type:"account"
id : "123",
transactions: [
{
type : "credit",
value : 100
},
{
type : "debit",
value : 10
}
]
}
Как мне запросить все идентификаторы учетной записи и их сумму по всем кредитам?
Ответ №1:
Использование в качестве функций МАССИВА https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/arrayfun.html
SELECT d.id,
ARRAY_SUM(ARRAY v.`value` FOR v IN d.transactions WHEN v.type = "credit" END) AS s
FROM default AS d
WHERE d.type = "account";
или
Использование выражения подзапроса https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/subqueries.html
SELECT d.id,
(SELECT RAW SUM(d1.`value`)
FROM d.transactions AS d1
WHERE d1.type = "credit")[0] AS s
FROM default AS d
WHERE d.type = "account";
Комментарии:
1. Спас мой день! Спасибо!
2. @vsr зачем нам [0] в вложенном запросе?