R Mongolite错误:读取4字节失败:套接字错误或超时

R Mongolite错误:读取4字节失败:套接字错误或超时,r,mongolite,R,Mongolite,我试图在mongo数据库中查询数据库中包含的所有id,以便将列表与单独的数据框进行比较。但是,当我尝试查找所有示例id字段时,我会看到: 错误:读取4字节失败:套接字错误或超时 查找查询的一个示例: library(mongolite) mongo <- mongo(collection,url = paste0("mongodb://", user,":",pass, "@", mongo_host, ":", port,"/",db)) mongo$find(fields = '{"s

我试图在mongo数据库中查询数据库中包含的所有id,以便将列表与单独的数据框进行比较。但是,当我尝试查找所有示例id字段时,我会看到:

错误:读取4字节失败:套接字错误或超时

查找查询的一个示例:

library(mongolite)
mongo <- mongo(collection,url = paste0("mongodb://", user,":",pass, "@", mongo_host, ":", port,"/",db))
mongo$find(fields = '{"sample_id":1,"_id":0}')
# Error: Failed to read 4 bytes: socket error or timeout
库(蒙古岩)

mongo简单的答案是,正如上面mongo文档中的引用所述,“不同的司机可能会有所不同”。在本例中,mongolite的默认值是5分钟,可以在github问题中找到,我猜它与C驱动程序有关

连接的默认套接字超时为5分钟。这意味着 如果您的MongoDB服务器死亡或不可用,则需要5分钟 几分钟来检测这个。您可以通过提供 sockettimeoutms=在您的连接URI中

github问题中还提到了一个解决方案,即增加URI中的
sockettimeoutms
。在连接URI的末尾,您应该添加
?sockettimeoutms=1200000
,作为在套接字超时之前增加时间长度(本例中为20分钟)的选项。修改原始示例代码:

library(mongolite)
mongo <- mongo(collection,url = paste0("mongodb://", user,":",pass, "@", mongo_host, ":", port,"/",db,"?sockettimeoutms=1200000"))
mongo$find(fields = '{"sample_id":1,"_id":0}')
库(蒙古岩)

mongoLaravel:your database.php
'sockettimeoutms'=>'1200000'
,添加此项,享受旅程