我正在使用 R 编写程序并执行一些分析。数据由外部供应商使用 MongoDB 以 JSON 格式捕获。他们通过端口 443 上的 URI 向我提供它,他们希望我使用 cURL 进行查询。他们有适当的身份验证和自签名 SSL。
我可以在 Windows 中通过 curl 进行身份验证和转储数据,但是要创建一个长期可持续的解决方案,这一切都需要在 R 中完成。
供应商说 RCurl“应该”工作,但他们没有提供任何支持,他们基本上只是不喜欢使用 RMongo 的想法并且没有对此发表评论(但如果我们能让它工作,那就太棒了,在我的意见)。
我加载了以下包 - ggplot2 - DBI - rjson - RJSONIO(如果我使用 rjson,有时我不会加载这个包,反之亦然) - RMongo - rstudio - RCurl
即使使用 curl,自签名证书也会导致问题,但通过在 Ruby 中编辑设置,然后使用 Ruby 启动 cmd shell 并以这种方式使用 curl 来解决这些问题。我不确定 R 中的问题是否相关。
当尝试走 RCurl 路线时,我最终会遇到如下命令/错误:
x <- getURL("https://xxx.xx.xxx.xxx:443/db/_authenticate", userpwd="xxxx:xxxxx") }{Error in function (type, msg, asError = TRUE) : couldn't connect to host
当尝试使用 RMongo 时,我更加一无所知......
> mongo <- mongoDbConnect("xxx.xx.xxx.xxx")
username = "xxxx" password="xxxxxxxxxxxxx" 已通过身份验证 <- dbAuthenticate(mongo, username, password) 2013 年 2 月 25 日下午 4:00:09 com.mongodb.DBTCPConnector fetchMaxBsonObjectSize 警告:使用 0 java.io.IOException 确定 maxBSON 大小的异常:无法连接到 [/127.0.0.1:27017] bc:java.net.ConnectException:连接被拒绝:在 com.mongodb.DBPort 处连接。在 com.mongodb.DBPort.go(DBPort.java:101) 在 com.mongodb.DBPort.go(DBPort.java:82) 在 com.mongodb.DBPort.findOne(DBPort.java) 打开(DBPort.java:224) :142) 在 com.mongodb.DBPort.runCommand(DBPort.java:151) 在 com.mongodb.DBTCPConnector.fetchMaxBsonObjectSize(DBTCPConnector.java:429) 在 com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:416) 在 com .mongodb.DBTCPConnector.call(DBTCPConnector.java:193) 在 com.mongodb.DBApiLayer$MyCollection。_find(DBApiLayer.java:303) 在 com.mongodb.DB.command(DB.java:159) 在 com.mongodb.DB.command(DB.java:144) 在 com.mongodb.DB._doauth(DB.java :503) 在 com.mongodb.DB.authenticate(DB.java:440) 在 rmongo.RMongo.dbAuthenticate(RMongo.scala:24)
Error in .jcall(rmongo.object@javaMongo, "Z", "dbAuthenticate", username, :
com.mongodb.MongoException$Network: can't call something
Feb 25, 2013 4:00:10 PM com.mongodb.DBPortPool gotError
WARNING: emptying DBPortPool to 127.0.0.1:27017 b/c of error
java.io.IOException: couldn't connect to [/127.0.0.1:27017] bc:java.net.ConnectException: Connection refused: connect
at com.mongodb.DBPort._open(DBPort.java:224)
at com.mongodb.DBPort.go(DBPort.java:101)
at com.mongodb.DBPort.go(DBPort.java:82)
at com.mongodb.DBPort.call(DBPort.java:72)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:202)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:303)
at com.mongodb.DB.command(DB.java:159)
at com.mongodb.DB.command(DB.java:144)
at com.mongodb.DB._doauth(DB.java:503)
at com.mongodb.DB.authenticate(DB.java:440)
at rmongo.RMongo.dbAuthenticate(RMongo.scala:24)
任何帮助将不胜感激!