我得到"未找到游标ID执行暂停" Mongolite(R)中的问题。但我不知道如何在R的查询uisng mongolite包中将超时标志设置为false。
答案 0 :(得分:0)
我认为该接口并未公开所有内容,但由于内部函数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的游标没有垃圾控制,因此,除非您非常小心游标总是用尽,否则您只是引入了内存泄漏。我想您必须重新启动mongo才能真正摆脱光标。