Как вы массово вставляете документы в 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.