Ich habe zwei Tage gesucht und habe keinen Code, der zu diesem geschlossen ist, gesehen. Dies ist der einzige Code in Java, den ich gesehen habe und es ist nicht genau das, was ich wollte.Aktualisierung der Transaktion in Datomic für ein Attribut, das viele Kardinalität hat
conn.transact(list(list("db.fn/cas", datomic_id, "attribute you want to update", old value, new value))).get();
Ich habe diesen Code mit einem einzigen Wert in dem alten Wert und ein einzigen Wert in dem neuen Wert versucht, aber es stapelt nur die Informationen, anstatt sie zu überlagern. Beispiel: alter Wert ist Huhn und neuer Wert ist Fisch. Nach der Transaktion ist es [Hühnchen, Fisch] anstelle von dem, was ich erwartet habe, nur [Fisch] und Huhn wird in Archiv (Geschichte) bewegt werden.
Die Frage ist also, wie Sie den alten Array-Wert angeben und wie geben Sie den neuen Wert ein Array, damit es aktualisiert wird, wie ich erwartet habe, wie oben angegeben.
Ich erinnere mich irgendwo zu lesen, dass unter der Haube nur eine Reihe von Werten zu einem Attribut verknüpft ist. Wenn dies der Fall ist, bedeutet das, dass ich die Datomic-ID der Zeichenfolge finden und ändern muss? Müssen Sie es auch entfernen, wenn es nicht in der neuen Liste ist?
Ich vermute, das würde zwei Transaktionen generieren. Eins, um den ganzen Wert zurückzuziehen und noch einen, um sie wieder hinzuzufügen? Ich ging einen anderen Weg zum Erstellen eines anderen Namespace mit dem Array dort. Auf diese Weise erstelle ich einfach einen neuen Namespace und ändere den Verweis auf diesen neuen Namespace. Ich weiß nicht, ob das schneller ist oder dein Weg schneller ist. – pompanoSlayer
Sie generieren eine Transaktion ("Die resultierenden Transaktionsdaten zurückgeben"), indem Sie sich zwei Sammlungen von Daten ansehen (was ist dort und was möchten Sie dort sehen). Das ist gesagt, meine Schritte sind ausführlich und Sie könnten einfach das diff nach Inspektion über z. ziehen, was wahrscheinlich eine bessere Lösung ist. –
Es scheint, als ob ich dem Datomic-Modell von Entitäten und Prädikaten folgen würde, dies würde mich zu Ihrer Lösung VS führen. Es wird unscharf, wenn ich andere Entitäten hinzufüge, um mit diesem Problem zu helfen. – pompanoSlayer