使用MongoDB驱动程序2.4.4更新多个字段

时间:2018-01-21 00:21:35

标签: c# mongodb-.net-driver

我尝试使用MongoDb.Driver 2.4.4更新文档中的多个字段。

我搜索过Stackoverflow,所有类似的潜在问题都适用于允许链接.Set()函数的旧版本。它没有出现2.4.4允许这个。

我的代码目前包含

var update = MongoDB.Driver.Builders<UserLocation>.Update.Set(x => x.Loction, coordinates);
var updateResult = await this._mongo.Taps.UpdateOneAsync(filter, update);

我想在此处更新其他字段,并在一次交易中更新所有字段。

1 个答案:

答案 0 :(得分:1)

  

我搜索过Stackoverflow以及所有潜在的问题   类似的旧版本允许链接.Set()   功能。它没有出现2.4.4允许这个。

这里没有任何改变,2.4.4版本的MongoDb.Driver仍然允许链接Set个电话。

UpdateDefinitionBuilder<TDocument>.Set()返回UpdateDefinition<TDocument>的实例。链式Set()调用是通过UpdateDefinition<TDocument>类的扩展方法完成的。此扩展方法在UpdateDefinitionExtensions命名空间的MongoDB.Driver类中定义。

我敢打赌你没有使用MongoDB.Driver命名空间的指令,因为在你的代码片段中你明确指定了MongoDB.Driver命名空间。这就是为什么编译器不知道应该调用的Set()扩展方法。

要修复此问题并已编译链接Set()个调用,只需添加

即可
using MongoDB.Driver;

位于源文件的顶部。然后,您就可以链接Set()次来电话:

var update = Builders<UserLocation>.Update.Set(x => x.Loction, coordinates)
    .Set(x => x.SomeField1, someValue1)
    .Set(x => x.SomeField2, someValue2);
var updateResult = await this._mongo.Taps.UpdateOneAsync(filter, update);