3

私の質問は、2つのネストされたイテレータ(手動結合)を作成せずに、スキーマに参照がないDataomicの2つのエンティティを結合する方法があるかどうかです。

Datomic Docoでは、2つのパラメーターを指定するクエリの例を示しています。

[:find ?n ?u
 :where
 [?c :community/name ?n]
 [?c :community/url ?u]]

基礎となる構造がKey-Valueデータベースであるため、これを「結合」と呼びます。したがって、同じエンティティの属性でさえ「結合」する必要があります。

次に、参照を持つ2つのエンティティ間の結合の例を示します(参照がここに示されていないスキーマで定義されていると仮定します)。

[:find ?c_name
 :where
 [?c :community/name ?c_name]
 [?c :community/neighborhood ?n]
 [?n :neighborhood/district ?d]
 [?d :district/region :region/ne]]

私の質問は-スキーマに参照がなくても上記のようなクエリは可能ですか?それとも、イテレータを作成して結果をトロールすることに頼らなければなりませんか?

4

1 に答える 1

2

:where 句で複数回出現する変数は、暗黙的に結合されます。

そのため、地域だけでなくコミュニティに属する名前を尋ねることができます

(def results (q '[:find ?name :where [_ :neighborhood/name ?name] 
                                     [_ :district/name ?name]] 
                 (db conn)))

これはあなたが求めていたものですか?(この例では、id は単に無視されます)

于 2013-01-31T15:23:24.037 に答える