如何最好地查询n度子图的Datomic



Datomic文档展示了如何递归地选择一些属性:[:person/firstName :person/lastName {:person/friends 6}]

但是我想拉出所有的属性(在查询时我不知道它们)。

[* {:person/friends 6}]不复发…是否有一个通配符排除了我想要循环的关系?是否有一种方法来做递归规范的拉和使用通配符?

或者是否有更好的方法来构造这个查询?

Timothy,

您应该能够使用["*" {:person/friends 6}]为您正在寻找的行为。

使用Day of Datomic中的示例pull_recursive .clj:

(d/pull (d/db conn) '[:person/name {:person/friend 2}] anne-id)
;; {:person/name "anne", :person/friend [{:person/name "bob", :person/friend [{:person/name "anne"} {:person/name "lucille"}]} {:person/name "james", :person/friend [{:person/name "anne"} {:person/name "lucille"}]}]}
(d/pull (d/db conn) '["*" {:person/friend 2}] anne-id)
;; {":db/id" 17592186045418, ":person/name" "anne", ":person/friend" [{":db/id" 17592186045419} {":db/id" 17592186045420}], :person/friend [{":db/id" 17592186045419, ":person/name" "bob", ":person/friend" [{":db/id" 17592186045418} {":db/id" 17592186045421}], :person/friend [{":db/id" 17592186045418, ":person/name" "anne", ":person/friend" [{":db/id" 17592186045419} {":db/id" 17592186045420}], :person/friend [{":db/id" 17592186045419} {":db/id" 17592186045420}]} {":db/id" 17592186045421, ":person/name" "lucille", ":person/friend" [{":db/id" 17592186045419}], :person/friend [{":db/id" 17592186045419}]}]} {":db/id" 17592186045420, ":person/name" "james", ":person/friend" [{":db/id" 17592186045418} {":db/id" 17592186045421}], :person/friend [{":db/id" 17592186045418, ":person/name" "anne", ":person/friend" [{":db/id" 17592186045419} {":db/id" 17592186045420}], :person/friend [{":db/id" 17592186045419} {":db/id" 17592186045420}]} {":db/id" 17592186045421, ":person/name" "lucille", ":person/friend" [{":db/id" 17592186045419}], :person/friend [{":db/id" 17592186045419}]}]}]}
马歇尔

最新更新