Как составить список коллекций 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
}