2015-05-06 19 views
10

L'interfaccia di MongoDB è completamente cambiata rispetto alla precedente. Here puoi vedere la documentazione ufficiale con alcuni esempi su come cercare, inserire e aggiornare, ma per quanto riguarda gli upserts?Come fare un upsert con MongoDB 2.0?

Idea per meta: ho provato a cercare su google e su SO ma molte risorse si riferiscono all'interfaccia precedente. Forse sarebbe bello creare un tag MongoLegacy.

risposta

22

passare un'istanza di UpdateOptions come parametro opzioni in UpdateOneAsync(filter, update, options), ad esempio:

collection.UpdateOneAsync(p => p.Id == user.Id, 
    Builders<User>.Update.Set(p => p.Name, "John"), 
    new UpdateOptions { IsUpsert = true }); 

EDIT

Per sostituire il documento, chiamare ReplaceOneAsync invece:

collection.ReplaceOneAsync(p => p.Id == user.Id, 
    user, 
    new UpdateOptions { IsUpsert = true }); 
+0

funziona perfettamente .. aggiungendo qualcosa come: Builders .Update.Set (p => p.Name, "John".) Set (p => p.Age, 29) consente di concatenare più aggiornamenti di campo Ates. – sbeskur