如何从R批量插入MongoDB中的文档?

时间:2015-03-11 06:16:46

标签: r mongodb rmongodb rmongo

我在R中有一个数据框,我试图将数据帧的每一行批量插入MongoDB中的单独文档。我能做的最接近的是使用以下脚本创建一个文档,并将dataframe行作为其子文档。

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

另一方面,我希望每一行都是单独的文档。我也看到上面的方法非常快,但是如果我们绕着行循环,它会大大降低速度

2 个答案:

答案 0 :(得分:8)

新的mongolite包会自动执行此操作:

library(mongolite)
m <- mongo("iris")
m$insert(iris)

答案 1 :(得分:3)

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对象的方式要简单得多(而且速度要快得多!)。