通过 mongolite 从 R 添加一列到 MongoDB 会产生持续错误

Adding a column to MongoDB from R via mongolite gives persistent error

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

我目前使用的功能是

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

    invisible(NULL)
}

目前确实有效。 (大约需要5-10分钟,还可以。不过,如果能以某种方式提高速度就更好了)。

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

错误信息如下:

Error: Failed to send "update" command with database "test": Failed to read 4 bytes: socket error or timeout

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

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

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

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

mcon <- mongo(mongoCollection, url=mongoURI)

mcon$update(...)