;; It's faster and better-behaved to just implement this logic in Clojure-land for the time being.
;; Since it's lazy we can handle large data sets (I've ran this successfully over 500,000+ document collections w/o issue).
[{:count(->>(i/field-values-lazy-seq@(ns-resolve'metabase.driver.mongo'driver)(sel:oneField:idfield-id)); resolve driver at runtime to avoid circular deps
(filteridentity)
((fn[s]
(if-let[limit(:limit(:query*query*))]
(takelimits)
s)))
(maphash)
set
count)}])
[{:count(let[values(transient(set[]))
limit(:limit(:query*query*))
keep-taking?(iflimit(fn[_]
(<(countvalues)limit))
(constantlytrue))]
(->>(i/field-values-lazy-seq@(ns-resolve'metabase.driver.mongo'driver)(sel:oneField:idfield-id)); resolve driver at runtime to avoid circular deps