使用Datomic,我试图想到如何在列表中嵌套列表?使用Datomic嵌套结构
一个Clojure数据结构的例子可能是(参见图1)。我知道Datomic具有参考的概念(例如图2)。但是这些看起来像标量类型,而不是对象(本身)。
[{:id 0,
:symbol DDD,
:company 3D Systems Corporation,
:price-difference 1.3100000000000023,
:event-list [{high 35.11,
tickerId 0,
WAP 34.491,
open 35.07,
date 20130426,
count 3403,
low 33.8,
hasGaps false,
close 34.53,
field historicalData,
volume 8667,
type historicalData}]}]
图1
{:db/id #db/id[:db.part/db]
:db/ident :district/region
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one
:db/doc "A district region enum value"
:db.install/_attribute :db.part/db}
;; district/region enum values
[:db/add #db/id[:db.part/user] :db/ident :region/n]
[:db/add #db/id[:db.part/user] :db/ident :region/ne]
[:db/add #db/id[:db.part/user] :db/ident :region/e]
[:db/add #db/id[:db.part/user] :db/ident :region/se]
[:db/add #db/id[:db.part/user] :db/ident :region/s]
[:db/add #db/id[:db.part/user] :db/ident :region/sw]
[:db/add #db/id[:db.part/user] :db/ident :region/w]
[:db/add #db/id[:db.part/user] :db/ident :region/nw]
图2
[编辑]
其实,我想我可能已经找到了答案here。我正在通过Day-Of-Datomic代码库,并找到下面的示例。但我仍然没有什么明确的联系在一起明确:评论命名为:评论/体(或:评论/作者)命名空间(S)。 Datomic是否只使用约定来链接:评论到:评论?
;; comments
[{:db/id #db/id[:db.part/db]
:db/ident :comments
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/many
:db/isComponent true
:db.install/_attribute :db.part/db}
{:db/id #db/id[:db.part/db]
:db/ident :comment/body
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}
{:db/id #db/id[:db.part/db]
:db/ident :comment/author
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}]
图1
没有任何联系:评论和:评论/正文。这只是一个命名约定。有关如何保存列表列表的示例,请参阅下面的答案。我使用了两个随机属性定义来在Clojure中保留等价于[[“a”“b”“c”] [“d”“e”“f”]]]。 – a2ndrade 2013-04-26 20:17:31