Working with PostgreSQL arrays

pgdialect supports PostgreSQL one-dimensional arrays using array struct field tag:

1. type Article struct {
2. ID     int64
3. Tags []string `bun:",array"`
4. }

To scan a PostgreSQL array into a variable, use pgdialect.Array:

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

3. var tags []string

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

You can also use pgdialect.Array to insert/update arrays:

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

Or in Where clause:

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