Si j'ai le suivant DaTomic base de données:
[:find ?n ?a ?l :where [?n :age ?a] [?n :likes ?l]]
3 Réponses :
récupérer un ensemble d'entités qui peuvent ou non avoir des attributs particuliers affirmés sont analogues à une jointure gauche dans une base de données relationnelle. p>
L'approche de DaTomic est de faire deux étapes: première requête pour les entités, puis naviguez de là pour obtenir les valeurs d'attribut ou Voir la liste de diffusion post Comment faites-vous une jointure gauche dans DateMic? < / a> avec son accompagnant gist pour un exemple. p> nil code> si l'attribut n'est pas affirmée pour une entité donnée. p>
En fait, je crois que get-sinon code> est la bonne approche dans ce cas. C'est une seule requête plutôt que deux étapes. En tant que FYI, une autre fonction similaire intégrée est
manquant? Code>.
DateMic a récemment été mis à jour avec quelques fonctions d'expression disponibles dans des requêtes de Dateomic. L'une de ces fonctions s'appelle Ainsi, en utilisant votre propre exemple, vous n'auriez besoin que de le changer comme si: P>
Malheureusement, vous ne pouvez pas réellement faire get-sinon code> et il vous permet de fournir une valeur de retour par défaut si un attribut n'existe pas sur une entité, de savoir comment
Clojure.core / Get Code > retournera une option troisième paramètres si la clé n'est pas trouvée. P>
[: Trouver? N? A? L
: Où [? N: Âge? A]
[(get-else-ormifier? N: aime faux)? l] code> p>
nil code> une valeur "par défaut" car ce n'est pas un type de données de DaTomic valide, et Dateomic va carpe si vous essayez, mais FALSE devriez vous amener où vous allez aussi. p>
Ce n'est plus la bonne réponse. Voir Stackoverflow.com/a/35741268/24172
Vous pouvez également essayer le "manquant?" fn. p>
regarder sur ceci: p>