MongoDB Go (golang) mit mgo: Wie kann ich einen Datensatz aktualisieren, finden Sie heraus, ob der update erfolgreich war und die Daten in einer einzigen atomaren operation?

Ich bin mit mgo-Treiber für MongoDB unter Gehen.

Meine Anwendung fragt für eine Aufgabe (mit nur einem Datensatz, wählen Sie im Mongo aus einer Sammlung, genannt "jobs") und dann registriert sich selbst als ein asignee um dieser Aufgabe (ein update für die gleiche "Arbeit" aufnehmen, die Einstellung sich selbst als Rechtsnachfolger).

Das Programm läuft auf mehreren Rechnern, alle sprechen die gleiche Mongo. Wenn mein Programm listet die verfügbaren Aufgaben und nimmt dann eine, andere Instanzen möglicherweise bereits erhalten haben, die Zuordnung, und die aktuelle Belegung wäre gescheitert.

Wie kann ich sicherstellen, dass die Platte, die ich Lesen und aktualisieren Sie dann tut oder nicht über einen bestimmten Wert (in diesem Fall ein Zessionar), in der Zeit werden aktualisiert?

Ich versuche zu bekommen eine Arbeit, egal was, so dass ich denke, ich sollte zuerst wählen Sie eine ausstehende Aufgabe und versuchen, Sie zu ordnen, ihn zu halten, nur in dem Fall, dass die Aktualisierung erfolgreich war.

Also, meine Abfrage sollte so etwas wie:

"Aus allen Aufzeichnungen der Sammlung 'jobs', update nur eine, asignee=null, Einstellung für meine ID als Rechtsnachfolger. Dann, gib mir den Datensatz also ich könnte den job."

Wie konnte ich nur Ausdrücken, dass mit mgo-Treiber für die Go?

InformationsquelleAutor Sebastián Grignoli | 2012-07-10

Schreibe einen Kommentar