如何在Datalog查询中对结果进行排序

Dav*_*jan 9 datalog datomic

我正在使用带有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
]
Run Code Online (Sandbox Code Playgroud)

它应该返回导演为Dave Swag的电影的标题,结果按照发布图像的年份排序.谢谢 :)

Dan*_*ton 6

如果要对结果进行排序,则需要在返回的结果集上执行查询.在Datomic博客文章中有一个关于查询清单20 的例子:

(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])
Run Code Online (Sandbox Code Playgroud)