Выдержка из драйвера C #:
Важно, чтобы курсор полностью освободил все ресурсы, которые он удерживает. Ключ к гарантии этого - убедиться, что вызывается метод Dispose перечислителя. Оператор foreach и методы расширения LINQ гарантируют, что будет вызван Dispose. Только если вы перечисляете курсор вручную, вы несете ответственность за вызов Dispose.
Курсор "res" создается путем вызова:
var res = images.Find(query).SetFields(fb).SetLimit(1);
не имеет метода Dispose
. Как от него избавиться?