gpt4 book ai didi

mongodb - mongoDb和asp.net core中的update操作

转载 作者:可可西里 更新时间:2023-11-01 09:39:23 26 4
gpt4 key购买 nike

我是 mongoDb 的新手,尝试使用 mongoDb 和 Asp.net Core web api 进行 CRUD 操作。我的问题是整个对象总是更新。我想更新我在 web api 中发送的特定字段。

示例:

   BusinessUnit oBU = new BusinessUnit(){
Id = "586e262268d90b290001b46e",
Name = "BU_Name",
Address = "my_Add"
};

现在我只想将地址更新为“my_New_add”并创建以下对象:

    BusinessUnit oBU = new BusinessUnit(){
Id = "586e262268d90b290001b46e",
Name = "BU_Name",
Address = "my_New_Add"
};

API 调用:http://localhost:88786/api/BusinessUnit/586e262268d90b290001b46e

正文:{“Id”:“586e262268d90b290001b46e”,“地址”:“my_New_add”

但它总是更新完整的对象。我该如何解决?

下面是我的代码:

Controller 代码:

    [HttpPut("{id}")]
public void Put(string id, [FromBody]BusinessUnit businessUnit)
{
_businessUnitRepository.UpdateBusinessUnit(id, businessUnit);
}

存储库代码:

    public async Task<ReplaceOneResult> UpdateBusinessUnit(string id, BusinessUnit businessUnit)
{
return await _context.BusinessUnits.ReplaceOneAsync(doc => doc.Id == id, businessUnit);
}

实际上我想做下面的查询(我知道 mongodb 是 noSql,但是为了让我的问题更清楚,我在下面写了 sql 查询)

UPDATE BusinessUnit Set Address = "my_New_add"WHERE Id = "586e262268d90b290001b46e"

提前致谢。

最佳答案

FindOneAndReplace

A single document can be replaced atomically using the FindOneAndReplace or FindOneAndReplaceAsync methods.

var filter = new BsonDocument("FirstName", "Jack");
var update = Builders<BsonDocument>.Update.Set("FirstName", "John");

var result = collection.FindOneAndUpdate(filter, update);

if (result != null)
{
Assert(result["FirstName"] == "Jack");
}

上面的代码会找到 FirstName 为 Jack 的文档,并将其 FirstName 字段设置为 John。然后它将返回被替换的文档。

请参阅文档 here

关于mongodb - mongoDb和asp.net core中的update操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com