Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Join Datomic-没有引用的实体之间的连接_Join_Clojure_Datomic - Fatal编程技术网

Join Datomic-没有引用的实体之间的连接

Join Datomic-没有引用的实体之间的连接,join,clojure,datomic,Join,Clojure,Datomic,我的问题是-有没有一种方法可以连接Dataomic中的两个实体,它们在模式中没有引用,而不用编写两个嵌套迭代器(手动连接) 最后,他们给出了一个答案 他们称之为“连接”——因为底层结构是一个键值数据库——所以即使是同一实体的属性也需要“连接”在一起 然后,他们给出了具有引用的两个实体之间的连接示例(假设该引用在此处未显示的模式中定义): 我的问题是-在模式中没有引用的情况下,是否可以进行上述查询?或者我会不得不写一个迭代器并搜索结果吗 在:where子句中多次出现的任何变量都是隐式连接的 因此,

我的问题是-有没有一种方法可以连接Dataomic中的两个实体,它们在模式中没有引用,而不用编写两个嵌套迭代器(手动连接)

最后,他们给出了一个答案

他们称之为“连接”——因为底层结构是一个键值数据库——所以即使是同一实体的属性也需要“连接”在一起

然后,他们给出了具有引用的两个实体之间的连接示例(假设该引用在此处未显示的模式中定义):


我的问题是-在模式中没有引用的情况下,是否可以进行上述查询?或者我会不得不写一个迭代器并搜索结果吗

在:where子句中多次出现的任何变量都是隐式连接的

因此,你可以询问属于社区和邻里学校的名字

(def results (q '[:find ?name :where [_ :neighborhood/name ?name] 
                                     [_ :district/name ?name]] 
                 (db conn)))
这就是你想要的吗?(本例中仅忽略ID)

[:find ?c_name
 :where
 [?c :community/name ?c_name]
 [?c :community/neighborhood ?n]
 [?n :neighborhood/district ?d]
 [?d :district/region :region/ne]]
(def results (q '[:find ?name :where [_ :neighborhood/name ?name] 
                                     [_ :district/name ?name]] 
                 (db conn)))