如何列出R中的mongodb集合

时间:2018-06-19 09:17:02

标签: r mongodb rmongodb mongolite rmongo

我一直在尝试在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不是一个选项。至少不是一个简单的。

由于

1 个答案:

答案 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

}