Как сделать upsert с MongoDB 2.0?

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

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

Ответ 1

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

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

ИЗМЕНИТЬ

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

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