鑑於以下類別和示例文檔,如何從Question集合中找到AnswerChoice文檔,其中AnswerChoice中的_id是使用官方C#驅動程序的「4d6d336ae0f84c23bc1fae00」。謝謝。如何使用MongoDB官方C#驅動程序檢索所有嵌入文檔值?
public class Question
{
[BsonId]
public ObjectId QuestionId
{get;set;}
public string Question
{get;set;}
public List<AnswerChoice> AnswerChoices
{get;set;}
}
public class AnswerChoice
{
[BsonId]
public ObjectId AnswerChoiceId
{get;set;}
public string Answer
{get;set;}
public int Order
{get;set;}
}
//樣品文件
{
"_id": "4d6d3369e0f84c23bc1facf7",
"Question": "Question 1",
"AnswerChoices": [
{
"_id": "4d6d3369e0f84c23bc1facf2",
"Answer": "Answer Choice A",
"Order": 1
},
{
"_id": "4d6d3369e0f84c23bc1facf3",
"Answer": "Answer Choice B",
"Order": 2
},
{
"_id": "4d6d3369e0f84c23bc1facf4",
"Answer": "Answer Choice C",
"Order": 3
},
{
"_id": "4d6d3369e0f84c23bc1facf5",
"Answer": "Answer Choice D",
"Order": 4
},
{
"_id": "4d6d3369e0f84c23bc1facf6",
"Answer": "Answer Choice E",
"Order": 5
}
}
//代碼檢索問題有AnswerChoice與_id 「4d6d336ae0f84c23bc1fae00」
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);
foreach (var q in cursor)
{
list.Add(q);
}
//如何檢索AnswerChoice物體「4d6d336ae0f84c23bc1fae00」的_id
有沒有辦法直接做到這一點,而不使用LINQ?我想你的方式可以與我需要的一起工作。我只是好奇。謝謝! – atbebtg 2011-03-02 18:55:22
@atbebtg:通過回答使用foreach .. – 2011-03-02 19:42:51