Я знаю, что драйвер Mongo Java будет повторять collection.find()
и большинство других операций чтения согласно Mongo docs.
Но я нигде не вижу ни в документах, ни в источнике драйвера - повторится DBCursor.next()
или DBCursor.hasNext()
?
collection.find()
повторит всю коллекцию, это понятно.
Теперь, если вы используете операцию while
, вы можете использовать операцию hasNext()
, чтобы прервать операцию, когда элементов больше нет.
while(cursor.hasNext()){
system.out.println(cursor.next())
}
Нет, он не будет повторять чтение на основе курсора.
Cursor.getMore() не может быть повторен из-за невозможности клиент, чтобы определить, был ли курсор передвинут. Другими словами, поскольку драйвер не знает, удалось ли выполнить оригинальный getMore() или нет, водитель не может достоверно знать, могут ли результаты быть непреднамеренно пропущено.
Подробнее здесь - https://github.com/mongodb/specifications/blob/master/source/retryable-reads/retryable-reads.rst#implementing-retryable-reads