2015-04-14 6 views
6

Ich benutze Datomic mit Play Framework. Das Spiel ist erstaunlich und Datomic ist schnell. Also eine gute Kombination insgesamt. Da bin ich neu bei Datomic (und Datalog, d. H. Abfrage Sprache Datomic Verwendungen), ich bin nicht in der Lage, mein Ergebnis zu sortieren (wie wir, Reihenfolge von in SQL). Beispielsweise.Wie sortiere ich Ergebnis in einer Datalog Abfrage

wenn meine Frage ist:

q= [:find ?title 
:where 
[?e :movie/title ?title] 
[?e :movie/director "Dave Swag"] 
[?e :movie/year ?year] 
[(sort ?year)] //here I am trying to sort by year 
] 

Es soll Titel der Filme zurückkehrt, dessen Direktor war Dave Swag und Ergebnis wird durch Jahr bestellt, in dem Bild veröffentlicht wurde. Danke :)

+0

Hey ich bin an der gleichen Stelle stecken, lassen Sie mich wissen, wenn Sie dies herausgefunden haben? –

+1

Eine Datenkatalogabfrage findet die Menge aller Variablen (oder Tupel von Variablen), die den Satz von Klauseln erfüllen. Sort hat wirklich keine _inside_ query-Abfrage - es sollte für das Ergebnis der Abfrage außerhalb der Abfrage ausgeführt werden. Das heißt, eine Menge von [? Title? Year] -Tupel zurückgeben und diese nach Jahr (in eine geordnete Sammlung) unter Verwendung von Clojure oder Java (oder Scala in diesem Fall) sortieren. –

Antwort

5

Wenn Sie Ihr Ergebnis Set sortieren möchten, müssen Sie dies außerhalb der Abfrage auf die zurückgegebene Ergebnismenge tun. Es gibt ein Beispiel dafür auf einem Datomic blog post about querying in der Liste 20:

(def hist (d/history db)) 

(->> (d/q '[:find ?tx ?v ?op 
      :in $ ?e ?attr 
      :where [?e ?attr ?v ?tx ?op]] 
     hist 
     editor-id 
     :user/firstName) 
    (sort-by first)) 

=> ([13194139534319 "Ed" true] 
    [13194139534335 "Ed" false] 
    [13194139534335 "Edward" true]) 
+0

Ich wollte nur den Verweis auf Datomics eigenen integrierten Sortieraggregator hinzufügen, der kombiniert werden kann, um mehrere Felder aus der Ergebnismenge zu sortieren. – m33lky

+0

Können Sie anzeigen, wie nach dem Datum der Transaktionseinfügung sortiert wird? (neueste zuerst) Oder zumindest, wie kann ich das Transaktionsdatum abrufen –

+0

@ m33lky Könnten Sie bitte, erweitern Sie dies? Auf "Sortieraggregator" kann nichts gefunden werden. –

Verwandte Themen