After I saw this discussion, I managed to write a generic function for this
const result = await this.db.select({
...getTableColumns(this.firstSchema),
[this.firstFieldName]: sql'json_agg(${this.secondSchema})'
})
.from(this.firstSchema)
.leftJoin(this.secondSchema, eq(this.firstSchema[this.firstFieldId], this.secondSchema.id))
.groupBy(this.firstSchema.id)