2

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

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

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

4

2 回答 2

9

mongolite包会自动执行此操作:

library(mongolite)
m <- mongo("iris")
m$insert(iris)
于 2015-05-10T05:51:36.730 回答
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.JSONmongo.bson.from.list而是使用。将 R 对象转换为 bson 对象的方法更加直接(而且速度更快!)。

于 2015-03-11T19:01:08.880 回答