在datomic数据记录中对列表测试属性

时间:2016-02-06 11:44:35

标签: datomic datalog

如果属性在特定集合(或列表)中,我想在datalog中的where子句中进行测试。例如,我想测试:tag-type/code是否在["urgent" "todo"]中。我可以这样做:

   (or
       [?tag-type :tag-type/code "urgent"]
       [?tag-type :tag-type/code "todo"]
        )

但我希望成为一个参数列表。说?tag-names 所以,我想做一些事情:

       [?tag-type :tag-type/code *in* [?tag-names])]

这可能吗?

1 个答案:

答案 0 :(得分:1)

朋友 - 没有SO账号! - 帮帮我了。 您可以在:in-clause中指定一个集合,如下所示:

[?collection-name  ...]

屈服:

(d/q '[:find (pull ?tag-type "[*]")
       :in $ [?tag-names ...] 
       :where 
       [?tag-type :tag-type/code ?tag-names]] 
        the-db ["urgent" "todo"])