2016-04-10 4 views
1

Ich brauche alle Werte eines bestimmten Attributs in einer Entität (für ein Datenschema). Die Funktion zum Zurückziehen erfordert, dass der Wert des Attributs als Argument übergeben wird, aber sie sind viel zu viele, und ich benötige nur, dass sie durch neue Werte ersetzt werden. Ist es möglich via clojure zu erreichen?Datomic - wie man alle Werte eines Attributs einzieht

Antwort

2

Sie können entweder alle Werte abfragen und den gewünschten Rückzug in Ihrem Peer generieren oder, wenn Sie ein "leeres Attribut" sicherstellen wollen, bevor neue Werte geschrieben werden, dasselbe innerhalb einer Transaktionsfunktion tun.

(map (fn [v] [:db/retract eid attrib v]) 
    (d/q '[:find [?v ...] 
      :in $ ?e ?a 
      :where [?e ?a ?v] 
      db 
      eid 
      attrib)) 
+0

Danke Leon, ich werde es versuchen. Könnten Sie auch das Snippet für das oben genannte tun innerhalb einer Transaktionsfunktion (wie Sie erwähnt haben) – javdev

+0

@Abhinav Schreiben Sie einfach eine Transaktionsfunktion und verwenden Sie das Snippet von innen - Es ist meist Standardplatte http://docs.datomic.com/ Datenbank-Funktionen.html –

Verwandte Themen