历史上的数据组查询

时间:2018-02-21 04:12:09

标签: clojure datomic

在历史记录中查询datomic db实体的所有属性的正确方法是什么?

例如,使用查询中的pull API或pull表达式,可以使用通配符来打印给定实体的所有属性。但是,相同的方法对特殊历史数据库不起作用。

(d/q '[:find [(pull ?e [*]) ...] :where [?e :test/firstName "Bob"]]  db-test)
; outputs list of Bob's properties

(d/q '[:find [(pull ?e [*]) ...] :where [?e :test/firstName "Bob"]]  (d/history db-test))
; IllegalStateException Can't pull from history

1 个答案:

答案 0 :(得分:3)

您可以使用查询返回所有历史记录的单个实体的所有数据:

(d/q '[:find ?e ?a ?v ?t ?op
       :in $ ?e
       :where [?e ?a ?v ?t ?op]] 
 (d/history (d/db conn)) <Your Entity ID>)