2015-05-06 3 views
10

Интерфейс MongoDB полностью изменился с предыдущего. Here вы можете увидеть официальную документацию с некоторыми примерами о том, как искать, вставлять и обновлять, но как насчет upserts?Как сделать upsert с MongoDB 2.0?

Идея для мета: я попытался выполнить поиск в google и на SO, но многие ресурсы относятся к старому интерфейсу. Может быть, было бы неплохо создать тег MongoLegacy.

ответ

22

Передайте экземпляр UpdateOptions в качестве параметра опции в UpdateOneAsync(filter, update, options), например:

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

EDIT

Чтобы заменить документ, вызовите ReplaceOneAsync вместо:

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

работает отлично .. добавление что-то вроде: Builders .Update.Set (p => p.Name, «John»). Set (p => p.Age, 29) позволяет вам связывать несколько полей Атес. – sbeskur