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

Wie kann ich ein Feld in Mongodb mit Java-Code automatisch erhöhen?

MongoDB erstellt automatisch eine ID für jedes darin eingefügte Objekt. Sie müssen keine eigene ID erstellen.

Wenn Sie eine inkrementierende Integer-ID benötigen, stoßen Sie auf alle möglichen Probleme bei der verteilten Synchronisierung - es ist tatsächlich ziemlich schwierig, das für nicht triviale Fälle richtig zu machen.

So generieren Sie eine eindeutige ID auf die einfachste Weise, die ich mir vorstellen kann:

  • Setzen Sie einen Index auf die ID-Spalte mit einer eindeutigen Einschränkung.
  • um eine Dokumentabfrage in den Index für die höchste Nummer einzufügen, fügen Sie 1 hinzu, verwenden Sie diese als ID.
  • wenn das Einfügen aufgrund einer doppelten Indexwiederholung fehlschlägt

Es beinhaltet einige Roundtrips, sollte aber robust und mit dem vorhandenen Index ziemlich schnell sein.

Wenn Sie nur einen Standort haben, der diese schreibt, können Sie die ID lokal in ein AtomicInteger einlösen und den vollständigen Roundtrip-Prozess nur durchführen, wenn Sie eine Kollision feststellen, und dann das AtomicInteger aktualisieren.