Как вы массово вставляете документы в MongoDB из R?

У меня есть датафрейм в R, и я пытаюсь массово вставить каждую строку этого фрейма как отдельный документ в MongoDB. Самое близкое, что я мог сделать, - это использовать следующий скрипт, который создает документ и делает строки данных в качестве его дополнительного документа.

x <- toJSON(unname(split(score, 1:nrow(score))))
bson <- mongo.bson.from.JSON(x)
mongo.insert(mongo,'abc.abc',x)

С другой стороны, я хочу, чтобы каждая строка была отдельным документом. Я также вижу, что описанный выше метод очень быстрый, но если мы зациклим строки, это значительно снизит скорость

2 ответа

Новый mongolite Пакет делает это автоматически:

library(mongolite)
m <- mongo("iris")
m$insert(iris)
library(rmongodb)
df <- data.frame(A=c("a","a","b","b"), B=c("X","X","Y","Z"), C=c(1,2,3,4), 
stringsAsFactors = F) 
lst <- split(df, rownames(df))
bson_lst <- lapply(lst, mongo.bson.from.list)
mongo.insert.batch(mongo = mongo, ns = "db.collection", lst = bson_lst)

И, пожалуйста, не используйте mongo.bson.from.JSONиспользовать mongo.bson.from.list вместо. Это гораздо более простой (и гораздо более быстрый!) Способ преобразования объекта R в объект bson.

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