【发布时间】:2020-02-25 14:31:10
【问题描述】:
我正在尝试使用FindOneAndUpdate。
我有一个简单的模型:
public class CRs
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string documentRef { get; set; }
// fields and properties
[BsonExtraElements]
public BsonDocument CatchAll { get; set; }
}
这是我的 Put 请求。
[HttpPut("{documentRef}")]
public CRs Update(string documentRef, [FromBody] UpdateRequest path)
{
var data = this.GetCollection().Find(_ => _.documentRef == documentRef).Limit(1).ToList();
if (data.Count < 1)
{
Response.StatusCode = 400;
return null;
}
var filter = new BsonDocument("documentRef", documentRef);
var update = Builders<BsonDocument>.Update
.Set(path.Path, path.Value);
var db = Startup.MongoClientHandle.GetDatabase("ioc"); // Get singleton connection.
var col = db.GetCollection<CRs>("inputs");
var doc = col.FindOneAndUpdate(filter, update);
Response.StatusCode = 200;
return doc;
}
但是我得到编译器错误:
DocumentController.cs(64, 27): [CS0411] The type arguments for method 'IMongoCollection<CRs>.FindOneAndUpdate<TProjection>(FilterDefinition<CRs>, UpdateDefinition<CRs>, FindOneAndUpdateOptions<CRs, TProjection>, CancellationToken)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
我错过了什么,我几乎完全按照 Mongo 的例子。谢谢。
编辑:
我的 UpdateRequest 如下所示:
public class UpdateRequest
{
public string Path { get; set; }
public BsonDocument Value { get; set; }
}
【问题讨论】: