2012-08-09 20 views
5

I am learning about Datomic queries ed era curioso su come eseguire "query con parametri".Parametri query in Datomic

Questo è ciò che mi si avvicinò con:

(d/q '[:find ?n ?x :where [?n :likes ?x] [(= ?x "pizza")]] 
    [['ethel :likes "sushi"]['fred :likes "pizza"]]) 

=> #<HashSet [[fred "pizza"]]> 

È questo, o c'è un modo più più conciso/idiomatica di realizzare quanto sopra?

risposta

6

La risposta si trova nella sezione "Offerte avanzate" del Datomic tutorial

utilizzare la clausola :in

(d/q '[:find ?n ?x :in $ ?x :where [?n :likes ?x]] 
    [['ethel :likes "sushi"]['fred :likes "pizza"]] "sushi") 

=> #<HashSet [[ethel "sushi"]]> 

:in $ ?x è la clausola di parametro e il trailing "sushi" è destinata a ?x