Wie Sie Sub-Sub-Array-Elemente in MongoDB festlegen

8

Ich entwickle eine Webapp, die eine portal-ish-Komponente hat (denke an mehrere Panels, die von Spalte zu Spalte herumgereicht und hinzugefügt oder entfernt werden können). Ich verwende MongoDB, um diese Informationen in einem Format wie ... zu speichern.

%Vor%

Ich versuche atomare / modifier-Operationen mit update () zu verwenden, und das wird verwirrend. Wenn ich nur eine Eigenschaft eines bestimmten Panels aktualisieren möchte, wie kann ich darauf verweisen?

%Vor%     
T. Stone 13.08.2010, 00:33
quelle

2 Antworten

14

Wenn Sie den Index im Array kennen, können Sie direkt über die Punktnotation auf das Array-Element zugreifen.

%Vor%

Stellen Sie sicher, dass Sie den Punktnotizpfad in Anführungszeichen als Zeichenfolge einschließen.

Bearbeiten:

Um mehr darüber zu erfahren, wie dies dynamisch funktionieren könnte, gebe ich ein Beispiel in PHP:

%Vor%

Ja, es gibt den Positionsoperator , aber scheint nicht hoch genug zu sein, um Arrays in Arrays zu ändern, dies kann sich in MongoDB 1.7 ändern. 0

Es gibt eine Alternative, die Sie tun können, anstatt zu versuchen, diese Informationen in ein verschachteltes Dokument zu stopfen. Versuchen Sie es zu verflachen. Sie können eine Sammlung mit Panel & amp; Spaltenobjekte:

Spaltenobjekt:

%Vor%

Bedienfeldobjekt:

%Vor%

Dann können Sie alle Spalten finden, die zu einem Benutzer gehören:

%Vor%

Sie können alle Bereiche für eine bestimmte Spalte finden, indem Sie Folgendes tun:

%Vor%

Da jede Spalte und jedes Panel eine eindeutige ID hat, die von MongoDB vergeben wird, können Sie einfach Optionen abfragen und atomar setzen.

%Vor%     
Klinky 13.08.2010, 02:00
quelle
0

Ich hatte auch eine Situation wie diese, ich folgte $ addToSet nach $ pull, um zu ersetzen, d. h. aktualisieren, was ich brauchte.

%Vor%

Und dann den alten Wert entfernen

%Vor%     
achuth 07.04.2014 06:41
quelle

Tags und Links