2016-02-06 2 views
0

Я хотел бы протестировать в предложении where в datalog, если атрибут находится в определенном наборе (или списке). Например, я хочу проверить, находится ли :tag-type/code в ["urgent" "todo"]. Я могу это сделать:Тестирование атрибута против списка в datomic datalog

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

Но я бы хотел, чтобы этот список был параметром. сказать ?tag-names Итак, я хотел бы сделать что-то в строках этого:

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

Возможно ли это?

ответ

1

Друг - без учета SO! - помог мне. Вы можете указать коллекцию в: в-п так:

[?collection-name ...] 

дающую:

(d/q '[:find (pull ?tag-type "[*]") 
     :in $ [?tag-names ...] 
     :where 
     [?tag-type :tag-type/code ?tag-names]] 
     the-db ["urgent" "todo"]) 
Смежные вопросы