C#Mongodb获取游标数
问题描述:
我想了解一个文档是否存在于使用下面代码的集合中。每当查询没有找到任何文档时,我会得到一个StackOverflowException。我在做什么错?C#Mongodb获取游标数
MongoServer server = MongoServer.Create(connectionString);
MongoDatabase db = server.GetDatabase(database);
MongoCollection<Document> documents = db.GetCollection<Document>("Documents");
var query = Query.EQ("DocID", doc.DocID);
var result = documents.FindOneAs<Document>(query);
if (result != null)
{
doc.Id = result.Id;
doc.DocCreated = result.DocCreated;
doc.DocCreatedBy = result.DocCreatedBy;
doc.MergeFiles(result);
documents.Save(doc);
}
else
{
doc.Save();
}
另外我使用的是官方的mongodb c#驱动程序。
编辑: 这是堆栈跟踪。它并没有说太多。
在System.dll中发生未处理的类型为“System.StackOverflowException”的异常 无法计算表达式,因为当前线程处于堆栈溢出状态。
编辑2: 这是我的文档类的链接。 https://gist.github.com/68d38bec41ebc46f30eb
答
你的其他条件似乎不涉及任何与mongo相关的代码。 doc.Save()调用DocumentData.Save传递这个(Document)作为参数。我只能猜测在那个调用链中的某个地方,它最终会再次调用Document.Save。
你有没有堆栈跟踪? – 2011-05-09 19:35:14
Twisternhra:这不是堆栈跟踪,这是错误消息。如果你在Visual Studio中执行此操作(并以调试模式运行),则应该得到一个异常处理程序,其中包含“将异常详细信息复制到剪贴板”。粘贴您在那里复制的文本。 – 2011-05-09 20:43:09
那就是我所做的。 Visual Studio没有给我任何关于发生什么的信息。其实我找出了问题所在。我不小心调用了错误的Save方法,这让我无限循环。由于某种原因,当我在某个地点设置断点时,它只能通过循环。 – MattAitchison 2011-05-09 20:56:22