MongoDB, курсор падает всегда в одном и том же месте

Допустим, есть коллекция из 1000 документов. Они все легкие. Мне надо пробежаться по всей коллекции и для каждого документа поискать в других местах информацию (иногда этот процесс для одного документа занимает много времени, больше 10 минут). И каждый раз в одном и том же месте (допустим на 322 документе) вылетает Command getMore failed: cursor id 226060711531 not found.

NoCursorTimeout = true при пробежке через .Find() по коллекции, поэтому исключение не может выпасть, если дольше 10 минут курсор стоял на месте. Документы легкие, поэтому в 16Мб они точно умещаются.

Пробовал убрать документы после которого падает/перед которым падает -- без разницы, всегда падает на 322 документе.

В интернете нашел похожую проблему в php'шников, они писали, что просто сами стали управлять курсором и ограничили размер батча. Так и сделал, написал через .FindAsync(), поставил батчсайз 20, и на тестовом сервере все прошло без проблем, исключение не выпало. Запустил на прод - снова та же история, на одном и том же месте, хотя условия все те же (только коллекция больше в раза 2).

Так вот вопрос, с чем это может быть связано? Как пофиксить это?


Ответы (2 шт):

Автор решения: Dm Prog

просто курсор протух. Он живет 40 минут

→ Ссылка
Автор решения: SerjK

Установить параметр cursorTimeoutMillis в большее значение. https://www.mongodb.com/docs/v5.0/reference/parameters/#mongodb-parameter-param.cursorTimeoutMillis

→ Ссылка