寻找可以按功能分组提供 MongoDB 类输出的 Postgres 查询

Looking for Postgres query which can provide output like MongoDB group by function

产品table

|_id|name  |
|---|------|
|3  |Laptop|

尺码table

|_id|product_id|size|
|---|----------|----|
|5  |3         |15  |
|6  |3         |17  |

查询:

select tp._id, tp.name, ts.size from test_product tp 
  left join test_size ts on tp._id = ts.product_id 
  group by tp._id, tp.name, ts.size
where tp._id = 3 limit 10 offset 0

当前输出:

|_id|name  |size|
|---|------|----|
|3  |Laptop|15  |
|3  |Laptop|17  |

预期输出

|_id|name  |size   |
|---|------|-------|
|3  |Laptop|[15,17]|

注: 由于当前查询,我得到了同一产品的 2 条记录,并且我的限制和偏移量查询逻辑变得错误并且没有得到正确的计数。我不太了解 Postgres 对这种情况的查询。所以我需要解决这个问题,这样我的限制和偏移逻辑对于获取数据是正确的,对于这个查询,我的产品数量将是 1。

使用array_agg():

SELECT
    tp._id,
    tp.name,
    ARRAY_AGG(ts.size ORDER BY ts.size) -- ORDER BY to get consistent results
FROM
    test_product tp
    LEFT JOIN test_size ts ON tp._id = ts.product_id 
GROUP BY
    tp._id,
    tp.name 
WHERE
    tp._id = 3 
LIMIT 10 
OFFSET 0;

聚合中的 ORDER BY 是可选的,但一次又一次地获得一致的结果总是很好。