2015-08-04 21 views
5

cerco di aggiornare status campo per oggetto da p2l gammaAggiornamento campo in serie MongoDB C# conducente

var update = Builders<BsonDocument>.Update.Set("p2l.$.status",BsonValue.Create(status)) 

Sembra che il codice funziona bene, ma come implementarlo con il costruttore digitato e impostare tutti i campi con lambda ? Ho trovato una soluzione al seguente link How to update a field in an array's subdocument contained in an array's subdocument in MongoDB using C# driver?

Ma adatto solo per la versione precedente del driver.

+0

Realizzi "perché" questo è stato annotato in questo modo e quindi non una funzione applicata ai membri dell'array come con un lambda vero? Due cose diverse Lo scopo qui è quello di "abbinare" l'elemento dell'array nell'espressione "query" dell'aggiornamento. Quindi "l'indice corrispondente" è stato annotato in questo modo in modo che l'elemento corretto sia aggiornato. –

risposta

8

Si può provare qualcosa di simile:

Builders<Person>.Update.Set(x => x.Pets[-1].Name, "Fluffencutters") 

Nota indice -1 su animali di raccolta, che significa applicare impostare per tutti gli elementi.
Ho trovato questa soluzione esplorando UpdateDefinitionBuilderTests.