MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB 2.2 - Aggiornamento del documento annidato dell'array

Al momento non è possibile eseguire questa operazione utilizzando un'operazione di aggiornamento regolare per i motivi che hai notato.

L'unica soluzione che puoi utilizzare al momento è aggiungere il controllo delle versioni al tuo documento e utilizzare il blocco ottimistico leggendo il documento, trovando gli elementi appropriati da modificare nella tua applicazione, modificandone i valori e quindi utilizzando un update che include la versione nel documento letto (in modo che se altri thread aggiornassero il documento tra la tua query e il tuo aggiornamento non sovrascriverai le modifiche ma dovresti ricaricare il documento e riprovare.

La strategia di controllo delle versioni non dovrebbe essere basata sull'intero documento, è possibile eseguire la versione degli elementi dell'array di primo livello e quindi aggiornare solo il sottoarray di cui si è interessati (tramite un aggiornamento con $set).