7

是否可以用 datomic 编写这类查询?

  • 找到最年长的孩子的名字
  • 找到体重指数(体重/身高)最低的人
4

1 回答 1

8
[:find (max ?tuple) :where 
    [?k :kid/age ?age] 
    [?k :kid/name ?name] 
    [(vector ?age ?name) ?tuple]

笔记:

  • 表达式中属性的顺序(vector ?age ?name)很重要

  • 该查询返回单个结果,而我们可能期望一个集合,因为可能有许多年龄最大的孩子。您可以使用(max n ?tuple)来实现这一点。

另请参阅http://docs.datomic.com/query.html中的聚合返回集合部分

如果您有更具体的想法,请在问题中提供更多详细信息并包含您的架构。

于 2013-04-12T15:01:12.163 回答