Идентификатор обновленного документа Mongo в C#

Хорошо задокументировано, как получить идентификатор возврата из Insert в коллекцию MongoDb на C# (Пример). Но как мне получить это для обновленного документа? Есть ли способ, кроме повторного запроса идентификатора, использовать SafeModeResult, возвращенный обновлением, для поиска обновленного идентификатора документа?

My code:
var query = abc;
var update = xyz;
try
{
   db["Collection"].Update(query, update, UpdateFlags.Upsert);
}
catch
{
}

person carlbenson    schedule 14.10.2011    source источник


Ответы (1)


Решение найдено:

db["Collection"].FindAndModify(query, SortBy.Ascending(), update, true, true).Response.GetValue(1).AsBsonDocument.GetValue("_id")

возвращает идентификатор объекта.

person carlbenson    schedule 14.10.2011
comment
Итак, вы знаете, что FindAndModify — это атомарная функция, а это означает, что если вы выполняете много операций записи, она может работать медленно, поскольку будет блокировать всю базу данных для каждой записи. Я не верю, что mongo в настоящее время поддерживает блокировку на уровне коллекции, поэтому, если вы запустите их много, это может привести к замедлению работы. - person Christopher Currens; 14.10.2011