如何编写一个考虑整个集合的数据组查询

时间:2013-04-12 12:13:21

标签: clojure datomic

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

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

1 个答案:

答案 0 :(得分: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

中的聚合返回集合部分

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