gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:50:02 24 4
gpt4 key购买 nike

如果我有以下 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com