我一直在尝试在R中的mongo数据库中列出集合。
我已经意识到这个功能仍然在mongolite包(https://github.com/jeroen/mongolite/issues/86)的待办事项列表中。似乎有一个包rmongodb
,它完成了这个技巧(Unable to see all collections from a mongodb remote server using mongolite)。但是,它不再是CRAN的一部分。
请允许任何人建议一种方法来列出数据库中的所有集合吗?
mongodb是远程的,所以我想使用与system()
组合的mongoshell不是一个选项。至少不是一个简单的。
由于
答案 0 :(得分:0)
我想出的解决方案如下:
ListMongoCollections <- function(db, mongoConString) {
result <- system(glue::glue(
"
mongo --host <<mongoConString>> --eval \"
db.getMongo().getDBNames().forEach(
function(v, i) {if (v.valueOf() === '<<db>>') {
print(db.getSiblingDB(v).getCollectionNames().join('%%%'))
}}
)
\"
",
.open = "<<",
.close = ">>"
),
intern = T
)
collections <- result %>% stringr::str_detect("%%%")
result <- result[collections] %>%
stringr::str_split(pattern = "%%%", simplify = T) %>%
as.character()
result
}