簡體   English   中英

C#Mongodb CRUD運算符更新方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM