有没有一种规范的方法可以从特定的datomic名称空间中获取所有标识? [英] is there a canonical way to grab all idents from a particular datomic namespace?

查看:51
本文介绍了有没有一种规范的方法可以从特定的datomic名称空间中获取所有标识?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

说我安装了:user / name :user / gender 作为基本模式。

say I had :user/name and :user/gender installed as datomic schema.

(pprint (d/q '[:find ?ident :where
               [?e :db/ident ?ident]
               [_ :db.install/attribute ?e]] (d/db conn)))

找到所有的db.install /属性

finds all the db.install/attributes

 #{[:db/code] [:user/gender] [:fressian/tag] [:db/unique] [:user/name] [:db/fn] 
 [:db/noHistory] [:db/fulltext] [:db/lang] [:db/valueType] [:db/doc]
 [:db/isComponent] [:db.install/function] [:db/cardinality] [:db/txInstant] [:db/index]}

但是,我只想列出:user名称空间中的项目

however, I only want to list items in the :user namespace

[:user/gender] [:user/name]

我应该添加到查询中还是有自动执行的功能?

what should I add to the query or is there a function that does it automatically?

推荐答案

我知道了

(d/q '[:find ?ident :where
           [?e :db/ident ?ident]
           [_ :db.install/attribute ?e]
           [(.toString ?ident) ?val]
           [(.startsWith ?val ":user")]] (d/db *conn*))

;; => #{[:user/gender] [:user/firstName]}

这篇关于有没有一种规范的方法可以从特定的datomic名称空间中获取所有标识?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆