Ich habe einige Probleme bei der Suche nach einem Weg zu Update, d. H. Ändern oder löschen Sie ein bestimmtes Dokument in einer eingebetteten Liste. Hier ist mein Fall:Was ist der richtige Weg, um ein Dokument in einer eingebetteten Liste zu aktualisieren?
CREATE CLASS Tag EXTENDS V
CREATE PROPERTY Tag.label STRING
CREATE CLASS Profession
CREATE PROPERTY Profession.jobtitle STRING
CREATE PROPERTY Profession.tags LINKSET Tag
CREATE CLASS UserProfile EXTENDS V
CREATE PROPERTY UserProfile.screenname STRING
CREATE PROPERTY UserProfile.profession EMBEDDEDLIST Profession
Also, einen Beitrag für UserProfile.profession
ist kein Problem:
UPDATE UserProfile ADD profession =
{"@type":"d","@class":"Profession","jobtitle":"Actress", "tags" : ["#22:5"]}
WHERE screenname = 'emma'
einiger Eintrag 'emma' für Userprofile und einen Tag mit der ID # 22 Gegeben: 5.
Wenn ich jedoch versuche, das Beruf-Dokument mit dem Arbeitstitel 'Schauspielerin' zu aktualisieren, wie soll ich dann vorgehen? Ich habe versucht, den folgenden Ansatz, die mit gearbeitet, aber ein Eintrag in der Liste nur:
UPDATE UserProfile SET profession =
{"@type":"d","@class":"Profession","jobtitle":"Actress", "tags" : ["#22:7", "#22:9"]}
WHERE profession.jobtitle = 'Actress'
AND screenname = 'emma'
Diese Aussage wirft keine Ausnahme und gibt 0 zurück, als die Anzahl betroffenen Datensätze.
Allgemein: Wie greife ich auf einen bestimmten Eintrag (mit einem Schlüssel des Dokuments selbst) in einer eingebetteten Liste oder einem Satz zu aktualisieren oder zu entfernen?
Außerdem: gibt es eine einfachere Möglichkeit, die Tags linkset im Profession-Dokument in der eingebetteten Liste zu aktualisieren? Oder muss ich immer das ganze Dokument bekommen und eine modifizierte Version zurück schreiben?
Danke!
Ingo
Vielen Dank für diese Antwort, aber der Befehl ersetzt die Liste eher durch eine neue, d. H. Wenn zwei oder mehr Einträge in der Berufsliste nach dem UPDATE sind, bleibt nur der neue Eintrag erhalten. –
Ich habe meine Antwort aktualisiert –