带有通配符的部分字词的词性查询

时间:2018-10-11 18:46:43

标签: wildcard datomic

因此,我不是数据库专家或开发人员,而是网络和系统管理员。我们有一个家伙离开,我正在努力做到这一点。我觉得它应该真的很简单,就像在SQL中一样,所以我一定缺少一些东西。

我正在从datomic控制台运行查询,我只想返回具有相似值的实体。我的大脑等同于在搜索文档等时使用通配符。

有效的示例查询:

[:找到?e  :哪里  [?e:project / name“ 3000gtVR4”] ]

因此,当项目名称已知时,此方法非常完美...我得到了我期望的实体ID值。但是,如果我想查看数据库中是否有类似的项目名称,但我不知道它到底是什么... 3000gt *或* VR4或类似的东西在许多程序中都可以工作,但是我找不到与Datomic相似的值

[:找到?e  :哪里  [?e:project / name“ 3000gt *”] ]

NoGo ...我已经尝试了大约一百种变体,并且说实话,我正在阅读的许多Datomic东西都超出了我的经验。我觉得这不需要进行大量查询和定义变量等...

您也可以使用Clojure语法进行回复,我也许能够理解它,从而可以通过REPL会话将其粉碎成提交形式,但是请理解,我不在这里。

1 个答案:

答案 0 :(得分:0)

Datomic查询是Datalog的扩展形式,其概念与传统SQL不同。

尝试:

  

[:查找[?e ...]        :where [[e:project / name?name]        [(重新匹配#“ 3000gt。+”?name)]]

[?e ...]返回实体的集合。

[(重新匹配#“ 3000gt。+”?name)]使用clojure函数作为谓词。 这是一个不错的教程https://docs.datomic.com/on-prem/query.html