[英]C# Mongodb CRUD operators Update method
我是C#和mongodb的新手,無法解決我的api的更新方法。 我在這里關注本教程。 我正在嘗試解決折舊問題,目前我停留在此部分
public void Update(ObjectId id,Product p)
{
p.Id = id;
var res = Query<Product>.EQ(pd => pd.Id,id);
var operation = Update<Product>.Replace(p);
_db.GetCollection<Product>("Products").Update(res,operation);
}
我已經在代碼中對其進行了更新,使其看起來像這樣。
public void Update(ObjectId id, Product p)
{
p.ProductId = id;
var res = Builders<Product>.Filter.Eq(pd => pd.ProductId, id);
var operation = Builders<Product>.Update(p);
_db.GetCollection<Product>("Product").UpdateOne(res, operation);
}
我的問題是在.update
上,我無法將其作為一種方法...所以構造此更新方法的正確方法是什么? 在此先感謝您提供的所有幫助。
您使用的構建器不正確
Builders<Product>.Update
這不是一種方法,它公開了許多您可以使用的更新操作,例如Set,AddToSet等。
根據要實現的目標,可以按以下方式使用它,如果要更新單個字段,可以使用此方法:
var operation = Builders<Product>.Update.Set(u => u.SomeField, "SomeValue");
您可以將它們鏈接在一起,即
var operation = Builders<Product>
.Update
.Set(u => u.SomeField, "SomeValue")
.Set(u => u.SomeOtherField, "SomeOtherValue");
因此,請使用您的代碼(看起來您正在過濾特定的產品ID,然后更新該字段)
public void Update(ObjectId id, Product p)
{
var res = Builders<Product>.Filter.Eq(pd => pd.ProductId, id);
var operation = Builders<Product>.Update.Set(u => u.ProductId, id);
_db.GetCollection<Product>("Product").UpdateOne(res, operation);
}
如果您想完全替換文檔,則可以使用ReplaceOne()而不是Update
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.