如果属性在特定集合(或列表)中,我想在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])]
这可能吗?
答案 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"])