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

Gibt es eine Möglichkeit, zwei Sammlungen in MongoDB atomar zu aktualisieren?

Hier gibt es viele Antworten, aber ich möchte hier alle Lücken ausfüllen:

Gibt es eine Möglichkeit, zwei Sammlungen in MongoDB atomar zu aktualisieren?

Nein. Die atomare Aktualisierung von zwei Sammlungen ist effektiv eine Transaktion. MongoDB unterstützt keine Transaktionen zwischen Sammlungen oder sogar innerhalb einer Sammlung.

MongoDB bietet mehrere Modifikatoren, die in einem einzelnen Dokument atomar sind. Sie können also mehrere verschiedene Variablen gleichzeitig inkrementieren ($inc ). Obwohl es hier einige Einschränkungen gibt, können Sie nicht zwei verschiedene Operationen für eine einzelne Eigenschaft ausführen.

Gibt es eine Möglichkeit, etwas in einer Sammlung basierend auf den Ergebnissen einer anderen Sammlung auf einen Schlag bedingt zu ändern?

Es gibt hier einige Dokumente zu atomaren Updates im Allgemeinen. Was Sie jedoch wirklich brauchen, ist eine Warteschlange und eine Form von zweiphasigem Commit oder Sie brauchen Trigger.

Trigger wurden noch nicht implementiert, daher ist dies in Ihrem Fall nicht wirklich eine Option.

Es besteht die Möglichkeit, dass die Nachricht zwischen diesen Aktionen als gelesen markiert wird, dann werde ich die "Ungelesen"-Zählung fälschlicherweise verringern.

An diesem Punkt haben Sie ein paar verschiedene Strategien, um dies mit einem gewissen Maß an Konsistenz zu verhalten. Offen gesagt, basierend auf Ihrer Beschreibung möchten Sie vielleicht untersuchen, wie Sie eine einfache Warteschlange erstellen, die Ihre Gesamtsummen aktualisiert.