Хорошо, для начала ваша декларация db
объявляет одного клиента, а не коллекцию клиентов, что, как я полагаю, вы хотите сделать.Я бы посоветовал объявить его в виде карты номеров клиентов к данным клиентов:
db /customer : intmap(Customer)
Теперь с помощью customers = /customer
вы можете получить полный набор клиентов и выполнить произвольную обработку на нем.В качестве альтернативы Db.intmap_fold_range
дает вам функцию сгиба для ряда ключей из коллекции;с этим вы можете легко кодировать свой первый запрос как:
names_with_ids_gt(x) =
get_names(names, id) = [/customer[id]/name | names]
Db.intmap_fold_range(@/customer, get_names, [], x, none, (_ -> true))
Конечно, получить полный набор клиентов и выполнить некоторую обработку по нему не будет очень эффективно.Для более эффективного решения вам нужно будет использовать внешнюю базу данных и ее возможности запросов.Опа поддержка для тех, кто приходит очень скоро : http://blog.opalang.org/2011/11/opas-database-and-where-its-heading.html.