MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ist das Verschieben von Dokumenten zwischen Sammlungen eine gute Möglichkeit, Statusänderungen in MongoDB darzustellen?

Ja, das ist beabsichtigt. MongoDB stellt explizit keine Joins oder Transaktionen bereit. Entfernen + Speichern ist eine Transaktionsform.

Sie haben hier wirklich zwei Optionen mit geringer Komplexität, beide beinhalten findAndModify .

Option Nr. 1:eine einzelne Sammlung

Basierend auf Ihrer Beschreibung erstellen Sie im Grunde eine Warteschlange mit einigen zusätzlichen Funktionen. Wenn Sie eine einzelne Sammlung nutzen, verwenden Sie findAndModify um den Status jedes Elements während der Verarbeitung zu aktualisieren.

Leider bedeutet das, dass Sie Folgendes verlieren:...dass die "eingehende" Sammlung auf diese Weise sehr klein und schnell gehalten werden kann .

Option 2:zwei Sammlungen

Die andere Option ist im Grunde ein zweiphasiger Commit, der findAndModify nutzt .

Schauen Sie sich die Dokumentation für diesen hier an .

Sobald ein Artikel in A bearbeitet wurde Sie legen ein Feld fest, um es zum Löschen zu markieren. Anschließend kopieren Sie dieses Element nach B . Einmal nach B kopiert Sie können den Gegenstand dann aus A entfernen .