0

我想通过 R 向 MongoDB 集合添加一列。该集合具有表格格式并且已经比较大(14000000 个条目,140 列)。

我目前使用的功能是

function (collection, name, value) 
{
    mongolite::mongo(collection)$update("{}", paste0("{\"$set\":{\"", 
        name, "\": ", value, "}}"), multiple = TRUE)

    invisible(NULL)
}

到目前为止它确实有效。(大约需要 5-10 分钟,没关系。不过,如果能以某种方式提高速度,那就太好了)。

但是,它也持续给我以下错误,中断脚本其余部分的执行。

错误消息如下:

错误:无法使用数据库“test”发送“update”命令:无法读取 4 个字节:套接字错误或超时

任何有关解决此错误的帮助将不胜感激。(如果有办法提高更新本身的性能,我也会非常乐意提供任何建议。)

4

1 回答 1

1

默认套接字超时为 5 分钟。

sockettimeoutms您可以通过直接在连接 URI 中设置来覆盖默认值:

mongoURI <-  paste0("mongodb://", user,":",pass, "@", mongoHost, ":", mongoPort,"/",db,"?sockettimeoutms=<something large enough in milliseconds>")

mcon <- mongo(mongoCollection, url=mongoURI)

mcon$update(...)
于 2021-08-02T11:39:25.717 回答