C#Mongodb获取游标数

时间:2011-05-09 19:17:47

标签: c# mongodb mongodb-.net-driver

我试图使用下面的代码找出集合中是否存在文档。每当查询找不到任何文档时,我都会收到StackOverflowException。我做错了什么?

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

1 个答案:

答案 0 :(得分:1)

您的其他情况似乎不涉及任何与mongo相关的代码。 doc.Save()调用DocumentData.Save将此(Document)作为参数传递。我只能猜测那个调用链中的某个地方最终会再次调用Document.Save。