MongoDB mehrere Datensätze des Arrays aktualisieren [duplizieren]

8

Ich habe vor kurzem begonnen, MongoDB zu verwenden, und ich habe eine Frage bezüglich der Aktualisierung von Arrays in einem Dokument. Ich habe eine Struktur wie folgt:

%Vor%

Ich versuche, die folgende Abfrage auszuführen:

%Vor%

Das Problem besteht darin, dass alle Dokumente aktualisiert werden, aber nur das erste Array-Element in jedem Dokument aktualisiert wird. Gibt es eine Möglichkeit, alle Array-Elemente zu aktualisieren, oder sollte ich versuchen, es manuell zu tun? Danke.

    
Viktor Kirilov 06.02.2013, 02:43
quelle

4 Antworten

19

Sie können mehrere Array-Elemente nicht in einem einzigen Aktualisierungsvorgang ändern. Daher müssen Sie das Update wiederholen, um Dokumente zu migrieren, für die mehrere Array-Elemente geändert werden müssen. Sie können dies tun, indem Sie jedes Dokument in der Sammlung durchlaufen und wiederholt ein Update mit $elemMatch anwenden, bis das Dokument alle relevanten Kommentare ersetzt hat, z. B .:

%Vor%

Beachten Sie, dass Sie, wenn die Effizienz dieses Vorgangs für Ihre Anwendung erforderlich ist, Ihr Schema so normalisieren sollten, dass der Speicherort des Avatars des Benutzers in einem einzelnen Dokument und nicht in jedem Kommentar gespeichert wird.

    
J Rassi 06.02.2013, 07:49
quelle
5

Eine Lösung könnte darin bestehen, eine Funktion zu erstellen, die mit forEach verwendet und ausgewertet werden kann (damit sie schnell ausgeführt wird). Wenn Ihre Sammlung "Artikel" ist, können Sie Folgendes ausführen:

%Vor%     
David Welch 06.02.2013 03:45
quelle
1

Wenn Sie die Indizes kennen, die Sie aktualisieren möchten, können Sie dies ohne Probleme wie folgt tun:

%Vor%
  • Beachten Sie, dass die IDEs die Syntax nicht akzeptieren müssen, aber Sie können sie ignorieren.
TBE 26.01.2016 11:47
quelle
-1

Es scheint, als könnten Sie das tun:

%Vor%

Wenn Sie also eine kleine bekannte Anzahl von Array-Elementen haben, könnte dies etwas einfacher sein. Wenn Sie etwas wie "Kommentare. *. Avatar" wollen - nicht sicher, wie das geht. Es ist wahrscheinlich nicht so gut, dass Sie so viele Datenduplikationen haben ..

    
B T 22.03.2014 07:29
quelle

Tags und Links