我正在使用带有play框架的datomic。游戏很棒,而且数据库很快。总体上是一个很好的组合。因为,我是datomic(和数据目录,即查询语言数据组使用)的新手,我无法对结果进行排序(就像我们一样,在sql中排序)。例如。
如果我的查询是:
q= [:find ?title
:where
[?e :movie/title ?title]
[?e :movie/director "Dave Swag"]
[?e :movie/year ?year]
[(sort ?year)] //here I am trying to sort by year
]
它应该返回导演为Dave Swag的电影的标题,结果按照发布图像的年份排序。谢谢你:)
答案 0 :(得分:5)
如果要对结果 set 进行排序,则需要在返回的结果集上在查询之外执行此操作。在清单20中的Datomic blog post about querying上有一个例子:
(def hist (d/history db))
(->> (d/q '[:find ?tx ?v ?op
:in $ ?e ?attr
:where [?e ?attr ?v ?tx ?op]]
hist
editor-id
:user/firstName)
(sort-by first))
=> ([13194139534319 "Ed" true]
[13194139534335 "Ed" false]
[13194139534335 "Edward" true])