missing-data - 在 Datomic 中查找缺少属性的实体

标签 missing-data datomic

如果我有以下 Datomic数据库:

{ :fred :age 42 }
{ :fred :likes :pizza }
{ :sally :age 42 }

如何查询两个实体( :fred:sally ),取回属性 :likes :pizza:fred:sally 的空值?

查询
[:find ?n ?a ?l
 :where [?n :age ?a]
        [?n :likes ?l]]

只返回 :fred 42 :pizza .

最佳答案

Datomic 最近更新了一些在 Datomic 查询中可用的表达式函数。这些函数之一被称为 get-else如果实体上不存在属性,它允许您提供默认返回值,就像 clojure.core/get 一样。如果未找到 key ,将返回选项第三个参数。

因此,使用您自己的示例,您只需要像这样更改它:
[:find ?n ?a ?l :where [?n :age ?a] [(get-else $ ?n :likes false) ?l]
不幸的是,您实际上无法制造 nil一个“默认”值,因为它不是有效的 Datomic 数据类型,如果您尝试,Datomic 会导致错误,但 false 也应该让您到达目的地。

关于missing-data - 在 Datomic 中查找缺少属性的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101259/

相关文章:

python - 多类分类中缺失值的 Keras 自定义损失

python - 用字符串值替换数据框中的 NaN

python - 用 NaN 替换字典的空值

logging - 控制台上未显示 Clojure Web 服务中的基本日志记录

clojure - 如何使用 Datomic 分区?

python - 计算并了解 Pandas 中哪些列缺少值的替代方法

python - 处理分类中稀有因子水平的一般策略?

java - Java 中的数据原子 "update"

clojure - 您可以使用 Datomic 快速将所有数据加载到内存中吗?

clojure - 如何在 Datomic 中表示具有现有 UUID 的实体?