Я думаю, что интерфейс не делает все общедоступным, но я разработал некрасивый хак, поскольку внутренняя функция mongo_collection_find имеет аргумент no_timeout:
mlite <- mongo()
iterate2 <- function (query = "{}", fields = "{\"_id\":0}", sort = "{}",skip = 0, limit = 0, no_timeout=FALSE) {
check_col()
cur <- mongo_collection_find(col, query = query, sort = sort, fields = fields, skip = skip, limit = limit, no_timeout=no_timeout)
mongo_iterator(cur)
}
environment(iterate2) <- environment(mlite$iterate)
results <- iterate2(no_timeout=TRUE)$page()
Помимо настройки no_timeout, кодтак же, как mlite $ iterate
Это работает, даже если это некрасиво (iterate2 является автономным, больше не метод mlite).
И будьте осторожны, что в AFAIK нет мусорауправление курсором, поэтому, если вы действительно не будете осторожны, ваш курсор всегда исчерпан, вы только что допустили утечку памяти.Я полагаю, вам придется перезапустить Монго, чтобы по-настоящему избавиться от курсора.