Reputation: 41
I am new to learning how to use MongoDB and am stuck pretty early on, so hoping someone can help me out with a simple example.
I can successfully connect to a Mongo server and create a collection and create objects to put in it. I am doing all of this through c# and the c# driver.
I have the following custom objects defined in my code.
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; }
}
As you can see, the Feature object contains a property which is a list of scenarios.
In my Mongo collection I have a Feature object that contains 3 scenarios. What I want to do in C# is write a method that can remove a specific scenario from a feature:
I am sure that this is probably going to be obvious when I see an example, but I have tried and get stuck trying to work through the List property looking for a property on a sub object.
I hope that all makes sense??!?
Thanks in advance.
P
Upvotes: 2
Views: 1308
Reputation: 41
Resolved it myself...
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;
}
Upvotes: 2