使用 PostgreSQL 数组

pgdialect 支持使用 array 结构体字段标签的 PostgreSQL 一维数组

type Article struct {
	ID	 int64
	Tags []string `bun:",array"`
}

要将 PostgreSQL 数组扫描到变量中,请使用 pgdialect.Array

import "github.com/uptrace/bun/dialect/pgdialect"

var tags []string

err := db.NewSelect().
	Model((*Article)(nil)).
	ColumnExpr("tags").
	Where("id = 1").
	Scan(ctx, pgdialect.Array(&tags))

您也可以使用 pgdialect.Array 插入/更新数组

res, err := db.NewUpdate().
    Model(&article).
    Set("tags = ?", pgdialect.Array([]string{"foo", "bar"})).
    WherePK().
    Exec(ctx)

或在 Where 子句中

q.Where("tags @> ?", pgdialect.Array([]string{"foo"}))