使用 MongoDB Driver 2.4.4 更新多个字段
Update multiple field with MongoDB Driver 2.4.4
我正在尝试使用 MongoDb.Driver
2.4.4 更新文档中的多个字段。
我搜索了 Whosebug,所有类似的潜在问题都是针对允许链接 .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);
我也想在这里更新一个额外的字段,并让它们在一次交易中全部更新。
I have searched Whosebug and all the potential questions that are
similar are for older versions which allow chaining of .Set()
functions. It does not appear 2.4.4 allows this.
这里没有任何变化,2.4.4 版本的 MongoDb.Driver 仍然允许链接 Set
调用。
UpdateDefinitionBuilder<TDocument>.Set()
returns UpdateDefinition<TDocument>
的实例。链式 Set()
调用是通过 UpdateDefinition<TDocument>
class 的扩展方法完成的。此扩展方法在 MongoDB.Driver
命名空间的 UpdateDefinitionExtensions
class 中定义。
我敢打赌您没有针对 MongoDB.Driver
命名空间的 using 指令,因为在您的代码片段中您明确指定了 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);
我正在尝试使用 MongoDb.Driver
2.4.4 更新文档中的多个字段。
我搜索了 Whosebug,所有类似的潜在问题都是针对允许链接 .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);
我也想在这里更新一个额外的字段,并让它们在一次交易中全部更新。
I have searched Whosebug and all the potential questions that are similar are for older versions which allow chaining of .Set() functions. It does not appear 2.4.4 allows this.
这里没有任何变化,2.4.4 版本的 MongoDb.Driver 仍然允许链接 Set
调用。
UpdateDefinitionBuilder<TDocument>.Set()
returns UpdateDefinition<TDocument>
的实例。链式 Set()
调用是通过 UpdateDefinition<TDocument>
class 的扩展方法完成的。此扩展方法在 MongoDB.Driver
命名空间的 UpdateDefinitionExtensions
class 中定义。
我敢打赌您没有针对 MongoDB.Driver
命名空间的 using 指令,因为在您的代码片段中您明确指定了 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);