我目前正在将我的clojure应用程序(使用korma)迁移到Datomic框架,并在翻译查询时处于循环状态。我意识到查询不是完全灵活的(与科尔玛相比),例如我想评估不同变量的条件子句。Datomic - 使用OR子句
考虑科尔马查询,
(select users
(where (or (and {:first_name [= "user"]}
{:last_name [= "sample"]})
{:email [= "[email protected]"]})))
这可以转换为Datomic,像这样的东西?
[:find ?e
:where (or (and [?u :user/first-name "user"]
[?u :user/last-name "sample"])
[?u :user/email "[email protected]"])
但这不是查询(根据Datomic文档),如在一个或子句中使用必须使用相同的一组变量的所有条款的推荐的方式。我如何围绕不同的变量集设置OR子句?
'(d/Q“[(未经测试!):寻找ú :??在$第一,最后所名名字?电子邮件 :其中(或(和[?u:用户/名字?名字] [?:用户/姓氏?姓氏]) [?u:user/email?email ])]' 在这种情况下不起作用,因为变量是不同的ent –
我更新了该场景的答案。 –