Skip to content

Instantly share code, notes, and snippets.

@tonsky
Last active September 16, 2015 14:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tonsky/498046f745874223885b to your computer and use it in GitHub Desktop.
Save tonsky/498046f745874223885b to your computer and use it in GitHub Desktop.
Querying DataScript database for entities with 3+ tags
(require '[datascript :as d])
(defn count-vals [db e a]
(count (d/datoms db :eavt e a)))
(let [db (-> (d/empty-db {:link/tags {:db/cardinality :db.cardinality/many}})
(d/db-with [[:db/add 1 :link/tags "a"]
[:db/add 1 :link/tags "b"]
[:db/add 1 :link/tags "c"]
[:db/add 2 :link/tags "x"]
[:db/add 2 :link/tags "y"]
[:db/add 3 :link/tags "q"]
[:db/add 3 :link/tags "p"]
[:db/add 3 :link/tags "r"]]))]
(d/q '[:find [?e ...]
:in $ ?count-vals
:where [?e :link/tags]
[(?count-vals $ ?e :link/tags) ?vsc]
[(>= ?vsc 3)]]
db count-vals))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment