C # Mongodb получить счетчик курсоров - PullRequest
1 голос
/ 09 мая 2011

Я пытаюсь выяснить, существует ли документ в коллекции, используя код ниже.Всякий раз, когда запрос не находит никаких документов, я получаю исключение 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.StackOverflowException' в System.dll. Невозможно оценить выражение, поскольку текущий поток находится в состоянии переполнения стека.

Редактировать 2: Вот ссылка на мой класс документов.https://gist.github.com/68d38bec41ebc46f30eb

1 Ответ

1 голос
/ 08 мая 2014

Ваше условие else не связано с каким-либо кодом, связанным с монго.doc.Save () вызывает DocumentData.Save, передавая этот (Document) в качестве аргумента.Я могу только догадываться, что где-то в этой цепочке вызовов он в конце концов перезванивает, делайте Document.Save снова.

...