几个问题:
-
首先,您引用的属性与关键字同名(
value
)-这将抛出一个错误。这需要采用以下格式
c["value"]
(或重命名该属性)
-
第二:你不能像现在这样将数组值传递给
sum()
-
sum()
跨文档处理单个属性。相反,你必须进行自我连接。这个例子总结了所有
价值
数组的属性,作为总计(不进行任何过滤-仅显示如何使用数组数据和聚合):
SELECT sum(i["value"]) as total
FROM c
join i in c.invoices
为了对总值进行过滤,您必须对内部连接和别名进行更精细的处理。这样的方法是可行的(我添加发票计数只是为了好玩),假设数组中有两个项目:一个有值
1200
一个有价值
1
:
SELECT invoiceData.invoiceCount, invoiceData.invoiceTotal
FROM c
JOIN
(SELECT COUNT(1) as invoiceCount,
SUM(i["value"]) as invoiceTotal
FROM i in c.invoices)
AS invoiceData
where
invoiceData.invoiceTotal <> 0
这将产生:
[
{
"invoiceCount": 2,
"invoiceTotal": 1201
}
]