Как составить список коллекций mongodb в R

Я пытался составить список коллекций в базе данных mongo в R. Я понял, что эта функция все еще находится в списке дел в пакете mongolite ( https://github.com/jeroen/mongolite/issues/86). Там, казалось, был пакет, rmongodb, который добился цели (невозможно увидеть все коллекции с удаленного сервера mongodb, используя mongolite). Тем не менее, он больше не является частью CRAN.

Может кто-нибудь, пожалуйста, предложить способ перечислить все коллекции в базе данных?

Mongodb является удаленным, так что я думаю, используя Mongoshell в сочетании с system() это не вариант. По крайней мере, не простой.

Спасибо

1 ответ

Решение

Решение, которое я придумал, заключается в следующем:

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

}
Другие вопросы по тегам