如何使用 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 和 plyr 将大型 MongoDB 集合传输到 R 中的 data.frame