从哈希集转换为关键字列表
Converting from Hash Set to Keyworded List
查询Datomic数据库时,结果是这样的
#{["Rainbows are many droplets acting as one" 17592186045438]
["Perception is malleable and changeable" 17592186045421]
["Dream preservation and posture" 17592186045440]}
有什么简单的方法可以将 #{} 散列集转换为 () 列表,以便我可以在其上使用 (nth-rand lst) 等列表操作?
而且,我如何对不同的片段进行关键字化,使它们看起来像 :title、:content、:time 等等?
要创建一个有序的集合,您可以对其进行排序之类的操作,这样您就可以控制集合最终的实际顺序。
您必须手动对其进行映射并创建以关键字为键的哈希映射,查询引擎不支持返回哈希映射。
考虑到所有这些因素,我可能会先创建地图,然后再排序,以提高可读性。
(->> (d/q '[:find ?name ?eid :where [...]] db)
(map (fn [[name eid]] {:name name :eid eid}))
(sort-by :eid))
您通常会得到自己的小型映射函数库,因为在调用数据对等库时,您基本上是在使用与传统数据库中的 JDBC 层相对应的内容。
查询Datomic数据库时,结果是这样的
#{["Rainbows are many droplets acting as one" 17592186045438]
["Perception is malleable and changeable" 17592186045421]
["Dream preservation and posture" 17592186045440]}
有什么简单的方法可以将 #{} 散列集转换为 () 列表,以便我可以在其上使用 (nth-rand lst) 等列表操作?
而且,我如何对不同的片段进行关键字化,使它们看起来像 :title、:content、:time 等等?
要创建一个有序的集合,您可以对其进行排序之类的操作,这样您就可以控制集合最终的实际顺序。
您必须手动对其进行映射并创建以关键字为键的哈希映射,查询引擎不支持返回哈希映射。
考虑到所有这些因素,我可能会先创建地图,然后再排序,以提高可读性。
(->> (d/q '[:find ?name ?eid :where [...]] db)
(map (fn [[name eid]] {:name name :eid eid}))
(sort-by :eid))
您通常会得到自己的小型映射函数库,因为在调用数据对等库时,您基本上是在使用与传统数据库中的 JDBC 层相对应的内容。