Datomic中的参数查询

时间:2012-08-09 20:25:30

标签: clojure datomic

learning about Datomic queries并对如何进行“参数查询”感到好奇。

这就是我提出的:

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

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

这是它,还是有更简洁/惯用的方法来实现上述目标?

1 个答案:

答案 0 :(得分:6)

答案在Datomic tutorial

的“高级查询”部分

使用:in子句

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

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

:in $ ?x是参数子句,尾随"sushi"绑定到?x