MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie rufe ich alle eingebetteten Dokumentwerte mit dem offiziellen C#-Treiber für MongoDB ab?

Sie sollten die Frage laden (wie im obigen Code) und linq oder foreach verwenden, um ein Antwortelement mit der angegebenen _id zu erhalten. Der Code sieht also folgendermaßen aus:

List<Question> list = new List<Question>();
MongoServer _server = MongoServer.Create("mongodb://localhost");
MongoDatabase _database = _server.GetDatabase("test");
var query = Query.And(Query.EQ("AnswerChoices._id", new ObjectId("4d6d336ae0f84c23bc1fae00")));
MongoCollection<Question> collection = _database.GetCollection<Question>("Question");
MongoCursor<Question> cursor = collection.Find(query);

var id = new ObjectId("4d6d336ae0f84c23bc1fae00");
foreach (var q in cursor)
{
    var answerChoice = q.AnswerChoices.Single(x=> x.AnswerChoiceId == id);
    list.Add(q);
}

Außerdem schlage ich vor, anstelle von Find die FindOne-Methode zu verwenden (weil ich annehme, dass Sie sicher sind, dass nur eine Antwort mit der oben angegebenen _id existiert).