Datomic-запрос для максимального агрегированного значения

Предположим, у меня есть объект author со многими связанными объектами book. Какой запрос найти автора с наибольшим количеством книг?


person Boffin    schedule 27.02.2015    source источник


Ответы (1)


ХОРОШО. Поскольку я нашел ответ сам - я публикую его здесь на случай, если кто-то будет искать:

Решение состоит в том, чтобы построить два datomic-запроса, передающих вывод первого во второй.

(->>
  (d/q '[:find (count ?b) ?a :where [?a :author/books ?b]] db)
  (d/q '[:find (max ?count) ?a :in $ [?count ?a]] db))

Насколько я понял, это обычный способ работы с менее тривиальными запросами в datomic - разделить его на несколько подзапросов и объединить их в цепочку, чтобы БД выполняла свою работу.

person Boffin    schedule 27.02.2015