ArangoDB AQL: Aktualisiere ein einzelnes Objekt im eingebetteten Array

8

Ich versuche, das Attribut in einem JSON-Dokument in einem eingebetteten Array mit AQL zu aktualisieren. Wie aktualisiere ich die "Adresszeile" für Adresse "home" mit AQL unten?

Benutzer:

%Vor%

AQL Versuch bisher

%Vor%

Danke für die Hilfe.

Grüße, Anjan

    
Anjan Rao 17.03.2015, 17:21
quelle

2 Antworten

7

Dazu müssen wir mit temporären Variablen arbeiten. Wir werden die Unterliste dort sammeln und ändern. Wir wählen eine einfache boolesche Filterbedingung, um die Abfrage besser verständlich zu machen.

Zuerst erstellen wir eine Sammlung mit einem Beispiel:

%Vor%

Heres die Query, die die subList auf alteredList hält, um sie später zu aktualisieren:

%Vor%

Während die Abfrage so wie sie ist funktioniert sie jetzt:

%Vor%

Diese Abfrage wird wahrscheinlich bald zu einem Leistungsengpass führen, da alle Dokumente in der Sammlung ändert, unabhängig davon, ob sich die Werte ändern oder nicht . Deshalb wollen wir die Dokumente nur aktualisieren, wenn wir wirklich ihren Wert ändern. Daher verwenden wir einen zweiten FOR , um zu testen, ob subList geändert wird oder nicht:

%Vor%     
dothebart 18.03.2015, 14:10
quelle
3

ArangoDB unterstützt jetzt Subset-Indizes. Die folgende Abfrage basiert auf der Antwort von dothebart :

%Vor%

Hinweis: Vergessen Sie nicht, einen hash -Index für subList[*].filterByMe :

zu erstellen %Vor%     
RienNeVaPlu͢s 26.11.2016 05:02
quelle

Tags und Links