sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan henter man al indlejret dokumentværdi ved hjælp af den officielle C#-driver til MongoDB?

Du skal indlæse spørgsmålet (som i koden ovenfor) og bruge linq eller foreach for at få svarelement med specificeret _id. Så koden vil se sådan ud:

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);
}

Jeg foreslår også i stedet for Find at bruge FindOne-metoden (fordi jeg formoder, at du er sikker på, at der kun findes ét svar med ovennævnte _id).



  1. Redis ikke i stand til at oprette forbindelse ved optaget belastning

  2. Spring data og mongodb - enkel roll back med fjeder inden for @Transactional

  3. MongoDB C# Driver frigiver ikke forbindelser og fejler derefter

  4. Tæller socket.io-brugere på tværs af vandrette servere