Clojure 为什么此数据日志查询会聚合?

Clojure 为什么此数据日志查询会聚合?,clojure,clojurescript,datomic,datalog,datascript,Clojure,Clojurescript,Datomic,Datalog,Datascript,所以,这不是一个关于它在做什么的问题,而是一个关于它如何(或至少为什么)做的问题。max和min是分别返回以下整数的最大值或最小值的函数。如何将?金额作为限制聚合计数的因素?为什么这些东西会聚集在一起?如何运行代码以使其聚合。我真的不知道这段代码是如何产生它所产生的结果的 max和min在datomic查询中 一元(min?x)和(max?x)函数聚合以返回单个数字 二进制(min?n?x)和(max?n?x)函数聚合以返回长度受?n限制的项目集合,以澄清:(max n coll)是coll的前


所以,这不是一个关于它在做什么的问题,而是一个关于它如何(或至少为什么)做的问题。max和min是分别返回以下整数的最大值或最小值的函数。如何将
?金额
作为限制聚合计数的因素?为什么这些东西会聚集在一起?如何运行代码以使其聚合。我真的不知道这段代码是如何产生它所产生的结果的

max
min
在datomic查询中

一元
(min?x)
(max?x)
函数聚合以返回单个数字

二进制
(min?n?x)
(max?n?x)
函数聚合以返回长度受
?n

限制的项目集合,以澄清:(max n coll)是coll的前n个值。和min一样,它是coll的N最低值。
(->
 (d/q '[:find ?color (max ?amount ?x) (min ?amount ?x)
        :in   [[?color ?x]] ?amount]
      [[:red 10]  [:red 20] [:red 30] [:red 40] [:red 50]
       [:blue 7] [:blue 8]]
      4)
 pr-str
 js/console.log)
;;; ([:red [20 30 40 50] [10 20 30 40]] [:blue [7 8] [7 8]]) 

(->
 (d/q '[:find ?color (max ?amount ?x) (min ?amount ?x)
        :in   [[?color ?x]] ?amount]
      [[:red 10]  [:red 20] [:red 30] [:red 40] [:red 50]
       [:blue 7] [:blue 8]]
      3)
 pr-str
 js/console.log)
;;; ([:red [30 40 50] [10 20 30]] [:blue [7 8] [7 8]]) 

(->
 (d/q '[:find ?color (max ?amount ?x) (min ?amount ?x)
        :in   [[?color ?x]] ?amount]
      [[:red 10]  [:red 20] [:red 30] [:red 40] [:red 50]
       [:blue 7] [:blue 8]]
      2)
 pr-str
 js/console.log)
;;; ([:red [40 50] [10 20]] [:blue [7 8] [7 8]])