无法使用mongolite

时间:2016-05-19 05:34:36

标签: r mongolite

这可能是一个微不足道的问题。我能够连接到远程mongodb服务器。我使用mongolite连接数据库。我的数据库是mobileapps。我也不知道在'集合'中要指定什么。我知道我可以指定任何收藏品。

library(mongolite)
con=mongo(collection = "test", url = "mongodb://user:password@ds035965.mongolab.com:35965/mobileapps")

虽然它正在连接,但没有显示任何数据。另外我不明白为什么它为str(con)显示这个:为什么jeroen在那里。

Classes 'mongo', 'jeroen', 'environment' <environment: 0x0000000014a8ec00>

它正在连接但我无法看到所有收藏品。我如何看到数据库中的所有集合。

另外,如何在不查询列名,类型的情况下对集合进行一些基本统计。我只能用con $ count()来计算db中的行数。 类似于cmd提示符下的db.getCollectionNames()。

更新1

谢谢我明白我必须在从mongolite连接时指定一个特定的集合。但是我如何使用Rmongodb连接仍然是一个问题。

mongo.create(host = "ds035965.mongolab.com", name = "MobileApp1", username = "user", password = "password ", db = "mobileapps")

这给了我一个错误:

Unable to connect to replset
Authentication failed.

更新2

当我使用 rmongodb 连接到我的本地主机时,我收到此错误。

Error in as.environment(pos) : invalid 'pos' argument

即使我能够在i中看到数据库和集合仍然会收到此错误。关于最新情况的任何想法。

1 个答案:

答案 0 :(得分:1)

mongolite 要求您连接到数据库的特定集合。初始化mongo对象时,您会看到dbcollection参数默认为&#34; test&#34;

?mongolite::mongo
  

mongo(collection =&#34; test&#34;,db =&#34; test&#34;,url =&#34; mongodb:// localhost&#34;,verbose = TRUE)

因此,当您使用

初始化con
con=mongo(collection = "test", url = "mongodb://user:password@ds035965.mongolab.com:35965/mobileapps")

即使您没有指定它连接到特定数据库,它也会连接到 db = test ,因为这是默认设置。因此,如果您没有名为 test 的数据库,则它不会包含任何数据。这解释了为什么您没有看到任何数据。

我的理解(并且我很高兴得到纠正),mongolite无法查看数据库中的所有馆藏,因为您必须特别是连接到一个。

如果您想查看集合,可以尝试rmongodb

library(rmongodb)
mongo <- mongo.create()
mongo.get.databases(mongo)
## returns databases

但是,要查看数据库中的所有馆藏,您无法使用该功能

mongo.get.database.collections(mongo, "test")

因为它返回一个空字符串。这是known issue

解决方法是使用

## return all the collections in the database 'test'
mongo.command(mongo = mongo, db = "test", command = list(listCollections=1))

mongo.destroy(mongo)