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

Wie führe ich Aktualisierungsvorgänge in GridFS (mit Java) durch?

In GridFS entfernen/löschen Sie nicht ein einzelnes Dokument, sondern tatsächlich eine Reihe von Dokumenten (Dateien werden in Blöcke aufgeteilt und jeder Block ist ein separates Dokument). Das bedeutet, dass das Ersetzen einer Datei einfach nicht atomar möglich ist.

Was Sie stattdessen tun können, ist:

  1. Fügen Sie eine neue Datei mit einem neuen Namen ein
  2. nachdem dies passiert ist (verwenden Sie die Replik bestätigt write-concern), aktualisieren Sie alle Verweise auf die alte Datei, um auf die neue zu verweisen
  3. nachdem Sie dafür eine Bestätigung erhalten haben, können Sie die alte Datei löschen

GridFS ist eine Art Hacking-Funktion. Es ist oft besser, nur einen separaten Dateiserver mit einem echten Dateisystem zu verwenden, um den Dateiinhalt zu speichern und nur die Metadaten in MongoDB zu speichern.