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"}))