Sto scrivendo del codice Java usando MongoDB con Java API e non sono sicuro di parte del Javadoc.Mongodb java api: WriteResult # getN()
In un contesto multi-thread, utilizzo DBCollection.html#update(com.mongodb.DBObject, com.mongodb.DBObject) per aggiornare un documento univoco , ma ho visto che due thread potevano provare a scrivere contemporaneamente. In questo contesto, ho osservato che era stata eseguita solo una scrittura, poiché Mongodb sembra utilizzare un blocco di scrittura ottimistico, ma volevo scoprire a livello di codice in quale thread la scrittura era quella che ha scritto e quale non era. Come un comportamento "no update" rimase in silenzio (intendo non fa eccezione o qualcosa del genere), ho cercato nella API qualche modo a rispondere il mio problema e dopo alcuni test scoperto questo metodo: WriteResult#getN()
public int getN()
Gets the "n" field
Returns:
La descrizione è, canticchia ... non molto esaustivo. I miei test hanno dimostrato che il thread che ha vinto la scrittura ha un getN() che restituisce 1 e l'altro 0.
Quindi la mia domanda è: Qualcuno potrebbe confermarlo?
perché dici che c'è stato un "fallimento"? se l'oggetto specificato non è stato trovato, non c'era nulla da aggiornare. Non ci sarebbe nessun aggiornamento, non un errore di scrittura. –
Mi spiace, come oratore inglese non nativo, a volte non riesco a dire la mia mente nel modo giusto. ;) Intendevo che non aggiornava in silenzio, che era il mio problema in realtà. Correggerò la mia formulazione – Nicocube