gpt4 book ai didi

c# - 从 MongoDB 中的数组中删除元素

转载 作者:可可西里 更新时间:2023-11-01 10:31:22 26 4
gpt4 key购买 nike

我是学习如何使用 MongoDB 的新手,很早就被困住了,所以希望有人能通过一个简单的例子帮助我。

我可以成功连接到 Mongo 服务器并创建一个集合并创建要放入其中的对象。我正在通过 C# 和 C# 驱动程序完成所有这些工作。

我的代码中定义了以下自定义对象。

public class Feature
{
public string FeatureName { get; set; }
public ObjectId Id { get; set; }
public List<Scenario> Scenarios { get; set; }
}

public class Scenario
{
private string _notes;
public string ScenarioName { get; set; }
public List<string> Givens { get; set; }
public List<string> Whens { get; set; }
public List<string> Thens { get; set; }
public string Explanation { get; set; }
public string Notes { get; set; }
}

如您所见,Feature 对象包含一个属性,该属性是场景列表。

在我的 Mongo 集合中,我有一个包含 3 个场景的 Feature 对象。我想在 C# 中做的是编写一个可以从功能中删除特定场景的方法:

  1. 用户向方法提供功能和场景名称
  2. 方法检查功能,查看其中的列表,以查找 scenario.scenarioname 与传递给方法的场景名称匹配的场景
  3. 如果存在,则从功能中删除场景并更新 Mongo 并返回一个 bool 值 true。如果不存在则返回false

我确信当我看到一个示例时,这可能会很明显,但我已经尝试并尝试通过 List 属性寻找子对象上的属性时遇到困难。

我希望一切都有意义??!?

提前致谢。

P

最佳答案

自己解决了...

public bool DeleteScenario(string featureName, string scenarioName)
{
var collection = GetCollection<Feature>();
var query = Query.EQ("FeatureName", featureName);
var resultingFeature = collection.Find(query).SetLimit(1).FirstOrDefault();

if (resultingFeature == null)
{
return false;
}

// we have found our feature and it exists.

foreach (var scenario in resultingFeature.Scenarios)
{
if (scenario.ScenarioName == scenarioName)
{
resultingFeature.Scenarios.Remove(scenario);
collection.Save(resultingFeature);
return true;
}
}

return true;

}

关于c# - 从 MongoDB 中的数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24173697/

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