how would one write a datomic query that takes the entire set into account

StackOverflow https://stackoverflow.com/questions/15971141

  •  03-04-2022
  •  | 
  •  

سؤال

Is it possible to write these sort of queries in datomic?

  • find the name of the oldest kid
  • find the person with the lowest body-mass index (weight / height)
هل كانت مفيدة؟

المحلول

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

Note:

  • the order of attributes in expression (vector ?age ?name) matters

  • the query returns single result while we might expect a collection because there may be many kids of age that is the maximum in the set. You can use (max n ?tuple) to achieve that.

See also the Aggregates Returning Collections section in http://docs.datomic.com/query.html

If you have something more specific in mind, provide more details in the question and include your schema.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top