如何使用 rmongodb 将数据框插入 mongodb

Posted

技术标签:

【中文标题】如何使用 rmongodb 将数据框插入 mongodb【英文标题】:How to insert a dataframe to mongodb using rmongodb 【发布时间】:2015-05-12 02:19:27 【问题描述】:

我有以下数据框

如何使用 rmongodb 将其插入 mongoDB?

【问题讨论】:

【参考方案1】:

您需要创建一个 JSON 对象列表,每个对象都将插入到 Mongo DB 中:

library(rjson)
df <- data.frame(rowLabels=c("Birrarung Marr", "Bourke Street Mall (North)", "Bourke Street Mall (South)", "Flagstaff Station", "Flinders St Station Underpass", "Melbourne Central", "Princes Bridge", "Sandridge Bridge", "State Library", "Town Hall (West)"),
                 locationMax = c(8592, 3213, 3127, 138, 4472, 3923, 4595, 1758, 4252, 2926))
df_list <- lapply(split(df, 1:nrow(df)), function(x) mongo.bson.from.JSON(toJSON(x)))

mongo <- mongo.create()                                # connect to Mongo on localhost
if (mongo.is.connected(mongo) == TRUE) 
    icoll <- paste(db, "test", sep=".")
    mongo.insert.batch(mongo, icoll, df_list)          # insert into the MongoDB
    dbs <- mongo.get.database.collections(mongo, db)
    print(dbs)
    mongo.find.all(mongo, icoll)

【讨论】:

当我运行您的代码时,我收到以下错误“预期的 mongo.bson 类对象列表”所以我使用“b = mongo.bson.from.JSON(df_list)”将其转换为 BSON,然后我得到“错误:is.character(txt) 不是 TRUE”。有解决办法吗? @Ezio123 抱歉,我忘记使用 mongo.bson.from.JSON 函数来解析每个 JSON 对象。再试一次......它现在应该可以工作了^ ^ 我仍然收到“错误:is.character(txt) is not TRUE” 关注这个演示,看看你能走多远:cran.r-project.org/web/packages/rmongodb/vignettes/… 您得到的错误可能是 Mongo 抱怨 JSON 格式不正确。我提供的将您的数据框转换为 JSON 的代码基本上是正确的。

以上是关于如何使用 rmongodb 将数据框插入 mongodb的主要内容,如果未能解决你的问题,请参考以下文章

Rmongodb 打包日期对象

使用 rmongodb 和 plyr 将大型 MongoDB 集合传输到 R 中的 data.frame

聚合框架中的 rmongodb $cond

如何使用 rmongodb 按 ObjectId 查询文档

如何使用 Databricks 使用服务原理通过 spark 数据框将批量数据插入 Sql Server 数据仓库

在 MongoDB (rmongodb) 中附加 BSON 数组