C# 从MongoDB中的数组中删除元素
我刚开始学习如何使用MongoDB,而且我很早就被困在这里,所以希望有人能用一个简单的例子来帮助我 我可以成功连接到Mongo服务器,创建集合并创建要放入其中的对象。我是通过c#和c#驱动程序来完成这一切的 我在代码中定义了以下自定义对象C# 从MongoDB中的数组中删除元素,c#,.net,mongodb,nosql,C#,.net,Mongodb,Nosql,我刚开始学习如何使用MongoDB,而且我很早就被困在这里,所以希望有人能用一个简单的例子来帮助我 我可以成功连接到Mongo服务器,创建集合并创建要放入其中的对象。我是通过c#和c#驱动程序来完成这一切的 我在代码中定义了以下自定义对象 public class Feature { public string FeatureName { get; set; } public ObjectId Id { get; set; } public List<Scenari
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; }
}
公共类功能
{
公共字符串特性名称{get;set;}
公共对象Id{get;set;}
公共列表方案{get;set;}
}
公共类场景
{
私人字符串注释;
公共字符串ScenarioName{get;set;}
公共列表给定{get;set;}
当{get;set;}时的公共列表
公共列表然后{get;set;}
公共字符串解释{get;set;}
公共字符串注释{get;set;}
}
如您所见,Feature对象包含一个属性,该属性是场景列表
在我的Mongo集合中,我有一个包含3种场景的Feature对象。我想在C#中做的是编写一种方法,可以从功能中删除特定场景:
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;
}
public bool DeleteScenario(字符串功能名、字符串场景名)
{
var collection=GetCollection();
var query=query.EQ(“FeatureName”,FeatureName);
var resultingFeature=collection.Find(query).SetLimit(1).FirstOrDefault();
if(resultingFeature==null)
{
返回false;
}
//我们发现了我们的特征,并且它是存在的。
foreach(resultingFeature.Scenarios中的var场景)
{
if(scenario.ScenarioName==ScenarioName)
{
resultingFeature.Scenarios.Remove(场景);
collection.Save(结果功能);
返回true;
}
}
返回true;
}
如果您已经回答了问题,则应将其作为此问题的答案提交。如果您有后续问题,您应该将其作为单独的问题进行提问,并在必要时将其链接回此背景。你不应该用其他问题编辑你的问题。我还原了你的编辑。请将您找到的答案作为此问题的答案发布。在stackexchange上回答您自己的问题并不是不受欢迎的,而是受到鼓励的(您可以因此获得一枚徽章)。当有人有更好的答案时,他们很可能会发布它。当你的答案可以改进时,人们可能会对此发表评论并提出改进建议。