Ich schreibe Java-Code mit MongoDB mit Java-API und ich bin unsicher von einem Teil des Javadoc.Mongodb Java API: WriteResult # getN()
In einem Multi-Thread-Kontext verwende ich DBCollection.html#update(com.mongodb.DBObject, com.mongodb.DBObject), um ein Dokument zu aktualisieren, aber ich sah, dass zwei Threads versuchen könnten, gleichzeitig zu schreiben. In diesem Zusammenhang habe ich beobachtet, dass nur ein Schreibvorgang durchgeführt wurde, da Mongodb eine optimistische Schreibsperre zu verwenden scheint, aber ich wollte programmatisch herausfinden, in welchem Thread der Schreibvorgang derjenige war, der geschrieben hat und welcher nicht. Als „kein Update“ Verhalten still war (ich meine keine Ausnahme oder etwas), ich in die API einen Weg gesucht meine Frage zu beantworten und nach einigen Tests herausgefunden, diese Methode: WriteResult#getN()
public int getN()
Gets the "n" field
Returns:
Die Beschreibung ist, hum ... nicht wirklich erschöpfend. Meine Tests zeigten, dass der Thread, der den Schreibvorgang gewinnt, einen getN() hat, der 1 zurückgibt und der andere 0.
Also meine Frage ist: Könnte jemand das bestätigen?
Warum sagen Sie, dass es einen "Fehler" gab? Wenn das angegebene Objekt nicht gefunden wurde, gab es nichts zu aktualisieren. Es würde kein Update geben, kein Schreibfehler. –
Tut mir leid, als ein nicht-Englisch-Englisch-Sprecher, scheitere ich manchmal meinen richtigen Weg. ;) Ich meinte damit, dass es nicht stillschweigend aktualisiert wurde, was eigentlich mein Thema war. Ich werde meine Formulierung korrigieren. – Nicocube