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

Abfrage von MongoDB-Löschtriggern

Sie müssen dieses Dokument anhand seiner ObjectID abrufen, was auf dem aktuellen Knoten, den Sie dem oplog folgen, nicht möglich ist von weil bis Sie die Löschoperation vom oplog erhalten haben , das Dokument ist weg. Was meiner Meinung nach bedeutet, dass Sie zwei Möglichkeiten haben:

  1. Stellen Sie sicher, dass allen Löschvorgängen ein Aktualisierungsvorgang vorausgeht, der es Ihnen ermöglicht, die erforderlichen Dokumentfelder vor dem Löschen anzuzeigen (dies wird das Löschen natürlich teurer machen)
  2. Führen Sie einen Secondary mit einer Slave-Verzögerung aus und fragen Sie dann diesen Knoten nach dem gelöschten Dokument ab (entweder direkt oder mit Tags ).

Bei Nummer 2 besteht das Problem in einer Verzögerung, die lang genug ist, um sicherzustellen, dass Sie das Dokument abrufen können, und kurz genug, um sicherzustellen, dass Sie eine aktuelle Version des Dokuments erhalten. Sofern Sie dem Dokument keine Versionierung als Prüfung hinzufügen (was dann Option 1 ähnelt, Sie würden wahrscheinlich die Version vor dem Löschen aktualisieren wollen), müsste dies im Wesentlichen eine optimistische Best-Effort-Lösung sein.