Finds documents containing a term that falls within a specified range of values. This produces the same results as using Postgres’ <, >, etc. range operators.
Will error if the field has not been indexed as a fast field.
SELECT description, rating, category
FROM mock_items
WHERE rating @@@ pdb.range(int4range(1, 3, '[)'));
range
required
A Postgres range specifying the range of values to match the field against. Range types include int4range, int8range, daterange, tsrange, and tstzrange.

Inclusive vs. Exclusive Range

pdb.rangeaccepts a Postgres range type. An inclusive lower bound is represented by [ while an exclusive lower bound is represented by (. Likewise, an inclusive upper bound is represented by ], while an exclusive upper bound is represented by ). For instance, the following query selects ratings between 1 and 3, inclusive.
-- 1 to 3 inclusive
int4range(1, 3, '[]')

-- 1 to 3 exclusive
int4range(1, 3, '()')

Unbounded Range

Passing NULL into either the upper or lower bound causes Postgres to treat the upper/lower bounds as positive/negative infinity.
int4range(1, NULL, '[)')