I’d do the filter before the paginate, so you don’t end up with variable-sized pages:
Map(
Paginate(
Filter(
Intersection(
Match(Index("by_room_type"), "single"),
Match(Index("by_room_size"), "big")
)
Lambda(
["doc"],
Let(
{
ref: Select("ref", Var("doc")),
ts: Select("ts", Var("doc")),
data: Select("data", Var("doc"))
},
Equals(Select("Price", Var("data")), "£700")
)
)
)
),
Lambda("ref", Get(q.Var("ref")))
)