我正在使用 ASP.NET Core 6 和 mongodb 作為資料庫構建一個 API。我正在嘗試將某個欄位設定為從 true 切換為 false,反之亦然。如果該欄位isactive:"True",那么我必須將其更新為 false,反之亦然。
我已經想出了如何更新值,但我必須自動將此欄位切換為相反的值,而無需指定值。
這是存盤庫類:
public bool UpdateStatus(string id)
{
_activity.UpdateOne(x => x.Id == id,
Builders<Activity>.Update.Set(u => u.IsActive,false));
return true;
}
上述存盤庫的控制器:
public ActionResult putbystatus(string id)
{
var existingactivity = activityRepository.Get(id);
if (existingactivity == null)
{
return NotFound($"Activity with provider id = {id} not found");
}
activityRepository.UpdateStatus(id);
return NoContent();
}
uj5u.com熱心網友回復:
你可以像下面這樣寫
public bool UpdateStatus(string id)
{
var filter = Builders<Activity>.Filter.Eq("Id", id);
_activity.UpdateOne(filter,
Builders<Activity>.Update.Set(u => u.IsActive,!_activity.Find(filter).FirstOrDefault().IsActive));
return true;
}
//or if you can modify the repository to accept IsActive value
public bool UpdateStatus(string id, bool isActive)
{
_activity.UpdateOne(x => x.Id == id,
Builders<Activity>.Update.Set(u => u.IsActive, isActive));
return true;
}
//Controller for above repository
public ActionResult putbystatus(string id)
{
var existingactivity = activityRepository.Get(id);
if (existingactivity == null)
{
return NotFound($"Activity with provider id = {id} not found");
}
activityRepository.UpdateStatus(id,!existingactivity.IsActive);
return NoContent();
}
[enter image description here][1]
[1]: https://i.stack.imgur.com/tytAK.png
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/504154.html
標籤:C# mongodb asp.net-core-webapi asp.net-core-6.0
上一篇:MongoDB子查詢
下一篇:如何快取bsonObjectId
