The 'Embedded' section of the Datomic Queries and Rules document says:
Query languages like SQL are oriented around a client-server model where, in a single conversaton, you are going to have to both:
- Answer your fundamental question, e.g. who bought socks this month.
- Recover any additional information required for reporting and processing, e.g. what are their names and email addresses.
The latter is not really a query, it is just a mechanical navigation to related information.
While I appreciate how the orthogonality of the two different mentioned aspects is honored, I think I'll often need to retrieve a whole entity, whichever its attributes are.
As far as I know, queries typically have this form:
(datomic.api/q '[:find ?name ?age ?email
:where
[?e :myapp/name ?name]
[?e :myapp/age ?age]
[?e :myapp/email ?email]]
(db conn))
If I wanted to retrieve entities that have N attributes, I'd have them to list them all in each query, which seems tedious and error-prone to me.
How to tell Datomic to retrieve the entities with all the fields they were persisted with, without having to specify them explicitly?