9

我正在使用带有游戏框架的 datomic。玩起来很棒,datomic 很快。所以总体来说是一个很好的组合。因为,我是 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 的电影的标题,结果按图像发布的年份排序。谢谢 :)

4

1 回答 1

6

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

(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])
于 2015-05-13T03:30:15.630 回答