无法使用 mongolite 从 MongoDB 远程服务器查看所有 collections
Unable to see all collections from a MongoDB remote server using mongolite
这可能是个小问题。我能够连接到远程 MongoDB 服务器。我使用 mongolite 连接到数据库。我的数据库是移动应用程序。我也不知道在 'collection' 中指定什么。我知道我可以指定任何 collection.
library(mongolite)
con=mongo(collection = "test", url = "mongodb://user:password@ds035965.mongolab.com:35965/mobileapps")
虽然正在连接,但是没有显示任何数据。我也不明白为什么它会为 str(con) 显示这个:为什么 jeroen 在那里。
Classes 'mongo', 'jeroen', 'environment' <environment: 0x0000000014a8ec00>
正在连接,但我看不到所有 collection。我如何查看数据库中的所有 collections。
另外,如何在不查询列名、类型的情况下进行一些关于 collection 的基本统计。我只能使用 con$count() 来计算数据库中的行数。类似于 cmd 提示符中的 db.getCollectionNames()。
更新 1
我知道在从 mongolite 连接时我必须指定一个特定的 collection。但是如何使用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
即使我能够看到数据库和其中的 collection,我仍然会收到此错误。对正在发生的事情有什么想法吗?
mongolite 要求您连接到特定的数据库集合。当您初始化 mongo
对象时,您会看到 db
和 collection
参数默认为 "test"
?mongolite::mongo
mongo(collection = "test", db = "test", url = "mongodb://localhost", 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")
因为它 return 是一个空字符串。这是一个known issue
解决方法是使用
## return all the collections in the database 'test'
mongo.command(mongo = mongo, db = "test", command = list(listCollections=1))
mongo.destroy(mongo)
这可能是个小问题。我能够连接到远程 MongoDB 服务器。我使用 mongolite 连接到数据库。我的数据库是移动应用程序。我也不知道在 'collection' 中指定什么。我知道我可以指定任何 collection.
library(mongolite)
con=mongo(collection = "test", url = "mongodb://user:password@ds035965.mongolab.com:35965/mobileapps")
虽然正在连接,但是没有显示任何数据。我也不明白为什么它会为 str(con) 显示这个:为什么 jeroen 在那里。
Classes 'mongo', 'jeroen', 'environment' <environment: 0x0000000014a8ec00>
正在连接,但我看不到所有 collection。我如何查看数据库中的所有 collections。
另外,如何在不查询列名、类型的情况下进行一些关于 collection 的基本统计。我只能使用 con$count() 来计算数据库中的行数。类似于 cmd 提示符中的 db.getCollectionNames()。
更新 1
我知道在从 mongolite 连接时我必须指定一个特定的 collection。但是如何使用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
即使我能够看到数据库和其中的 collection,我仍然会收到此错误。对正在发生的事情有什么想法吗?
mongolite 要求您连接到特定的数据库集合。当您初始化 mongo
对象时,您会看到 db
和 collection
参数默认为 "test"
?mongolite::mongo
mongo(collection = "test", db = "test", url = "mongodb://localhost", 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")
因为它 return 是一个空字符串。这是一个known issue
解决方法是使用
## return all the collections in the database 'test'
mongo.command(mongo = mongo, db = "test", command = list(listCollections=1))
mongo.destroy(mongo)