Working with PostgreSQL arrays
pgdialect
supports PostgreSQL one-dimensional arrays using array
struct field tag:
type Article struct { ID int64 Tags []string `bun:",array"` }
To scan a PostgreSQL array into a variable, use 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))
You can also use pgdialect.Array
to insert/update arrays:
res, err := db.NewUpdate(). Model(&article). Set("tags = ?", pgdialect.Array([]string{"foo", "bar"})). WherePK(). Exec(ctx)
Or in Where
clause:
q.Where("tags @> ?", pgdialect.Array([]string{"foo"}))