Сумма запроса Couchbase N1QL из массива вложенных документов - PullRequest
1 голос
/ 13 марта 2019

У меня есть следующая модель документа в моей базе данных db

{
 type:"account"
 id : "123",
 transactions: [
   { 
      type : "credit",
      value : 100
   },
   { 
      type : "debit",
      value : 10
   }
 ]
}

Как запросить все идентификаторы аккаунта и их сумму всех кредитов?

1 Ответ

4 голосов
/ 13 марта 2019

Использование функций AS ARRAY 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";
...