通过 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(...)
我想通过 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(...)