couchbase - couchbase N1QL group-by 在子文档中
问题描述
给定以下数据模型:
{
"events": [
{
"customerId": "a",
"type": "credit" ,
"value": 10
},
{
"customerId": "a",
"type": "credit" ,
"value": 10
},
{
"customerId": "b",
"type": "credit" ,
"value": 5
},
{
"customerId": "b",
"type": "credit" ,
"value": 5
}
]
}
如何通过 customerId 查询信用总和?IE:
{
{
"customerId": "a",
"total": "20
},
{
"customerId": "b",
"total": "10
}
}
解决方案
每个文档聚合使用 SUBQUERY 表达式
SELECT d.*,
(SELECT e.customerId, SUM(e.`value`) AS total
FROM d.events AS e
WHERE ......
GROUP BY e.customerId) AS events
FROM default AS d
WHERE ...........;
对于整个查询
SELECT e.customerId, SUM(e.`value`) AS total
FROM default AS d
UNNEST d.events AS e
WHERE ......
GROUP BY e.customerId;
推荐阅读
- unity3d - addforce 脉冲究竟是如何计算的?
- javascript - 在 ReactJS 中添加到 Font Awesome 图标的链接
- kotlin - 如何为 Java/Kotlin 添加 lint 快速修复以“修复整个项目”?
- ios - 为 textView 打开键盘时 TableView 不滚动
- java - 想从 beanIO 字段名称标签写入 csv 中的标头
- angular - f5后第一次后退按钮不起作用
- ios - WKWebView:html内容中的mailto链接未打开邮件应用程序
- firebase - 如何在 Firebase 实时数据库中实现分页,就像我们可以在 SQL 中实现的那样?
- xcode - Xcode 更新后无法打开项目
- google-drive-api - 以 MB / GB 计算时,google drive api 是否会舍入文件大小?