【问题标题】:How to do an upsert with MongoDB 2.0?如何使用 MongoDB 2.0 进行更新插入?
【发布时间】:2015-05-06 16:35:40
【问题描述】:

MongoDB的界面与之前的完全不同。 Here 你可以看官方文档,里面有一些关于如何搜索、插入和更新的例子,但是 upserts 呢?

元的想法:我尝试在 google 和 SO 上进行搜索,但许多资源都引用了旧界面。也许创建一个 MongoLegacy 标记会很好。

【问题讨论】:

    标签: c# mongodb mongodb-csharp-2.0


    【解决方案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 ReplaceOptions { IsUpsert = true });
    

    【讨论】:

    • 完美运行.. 添加类似: Builders.Update.Set(p => p.Name, "John").Set(p => p.Age, 29) 允许您链接多个字段更新。
    • 建议更新:改用 ReplaceOptions。 'IMongoCollection.ReplaceOneAsync(FilterDefinition, Type, UpdateOptions, CancellationToken)' 已过时:'使用采用 ReplaceOptions 而不是 UpdateOptions 的重载。'
    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 2015-11-08
    • 2021-05-23
    • 2016-06-11
    • 2012-10-04
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多