由于Datomic架构本身存储在Datomic中,如何查询Datomic以获取当前安装的架构?我想只获取用户级架构,不包括具有分区之类的系统级架构。
答案 0 :(得分:3)
根据Datomic docs,应将用户级架构安装到:db.part/db
分区。在给定Datomic连接的情况下,以下函数获取该分区中的所有模式属性。
(defn get-user-schema [conn]
(d/q '[:find ?id
:where [?e :db/ident ?id]
[_ :db.install/attribute ?e]
[?e :db.install/partition :db.part/db]]
(d/db conn)))
相关:is there a canonical way to grab all idents from a particular datomic partition?
答案 1 :(得分:1)
我最近才开始学习Datomic和Datalog,所以我不知道自从上一个回答以来的三年内是否发生了变化,或者这只是做同样事情的另一种方式: / p>
[:find ?attr ?type ?card
:where
[_ :db.install/attribute ?a]
[?a :db/valueType ?t]
[?a :db/cardinality ?c]
[?a :db/ident ?attr]
[?t :db/ident ?type]
[?c :db/ident ?card]]
它会给你一些看起来像这样的东西:
取自http://www.learndatalogtoday.org/chapter/4(底层挑战2的解决方案)。