Sto cercando di aggiornare una riga in una raccolta MongoDB (tipizzata) con il driver C#. Quando gestisco i dati di quella particolare raccolta di tipo MongoCollection<User>
, tendo ad evitare di recuperare dati sensibili dalla raccolta (salt, hash della password, ecc.)MongoDB: aggiornamento solo campi specifici
Ora sto tentando di aggiornare un'istanza User
. Tuttavia, in primo luogo non ho mai recuperato dati sensibili, quindi suppongo che questi dati siano default(byte[])
nell'istanza del modello richiamato (per quanto posso dire) prima di applicare le modifiche e inviare i nuovi dati alla raccolta.
Forse sto supervisionando qualcosa di banale nel driver MongoDB C# come posso utilizzare MongoCollection<T>.Save(T item)
senza aggiornare proprietà specifiche come User.PasswordHash
o User.PasswordSalt
? Devo prima recuperare il record completo, aggiornare qui le proprietà "sicure" e scriverlo? O esiste un'opzione di fantasia per escludere determinati campi dall'aggiornamento?
Grazie in anticipo
Grazie per la segnalazione. Ma il mio problema di base esiste ancora: desidero aggiornare tutte le proprietà dal mio digitato 'MongoCollection' con i valori di un'istanza di 'T', eccetto uno specifico set di campi noto. Qualcosa sulla falsariga di 'Aggiornamento . Ogni cosa di (qualche oggetto). Eccetto (x => x.ExceptThis). Eccetto (x => x.ExceptThat)' –
Manny
Questo è un lavoro personalizzato che avresti bisogno di scrivere (EverythingFrom ..) . Non troppo difficile da fare sul lato client, camminando su BsonMemberMap e ottenendo tutti i membri mappati, quindi creando solo un Update.Set() da ciascuno se si conosce il valore modificato. Non è garantito coerente dal momento che il DB potrebbe essere cambiato da quando si legge il record in memoria però. –