2017-04-12 1 views
1

Ich möchte meine Sammlung atomisch "neu erstellen", was bedeutet, dass alle vorhandenen Dokumente gelöscht und von Grund auf neu erstellt werden. Die Sache ist, da Transaktionen nicht unterstützt werden, gibt es eine kleine Zeitlücke, dass die Sammlung leer ist, was ich vermeiden möchte.Sammlung in Pymongo neu erstellen

Gibt es eine Möglichkeit, eine solche Aktion in einer atomaren Materie durchzuführen? also wird es keinen Punkt geben, wo die Sammlung leer ist?

Antwort

1

Sie können eine neue Sammlung mit einem anderen Namen erstellen und dann den Befehl rename verwenden, um die neue Sammlung umzubenennen und die vorhandene Sammlung (mit der Option dropTarget=True) zu löschen.

Es gibt mehrere Einsprüche aber:

  • Der Befehl offene Cursor ungültig werden, die Anfragen unterbricht, dass derzeit Daten zurückkehren.
  • renameCollection blockiert alle Datenbankaktivitäten für die Dauer der Operation.
  • renameCollection ist nicht kompatibel mit sharded Sammlungen.
  • Wenn die Operation renameCollection nicht abgeschlossen wird, sind die Zielsammlung und die Indizes nicht verwendbar und müssen manuell bereinigt werden.

Weitere Informationen finden Sie im official docs.

+0

Danke, das hat mir sehr geholfen. –