2

我遵循 http://docs.mongodb.org/manual/reference/method/db.collection.insert/
的约定, 在一次 RMongo::dbInsertDocument 调用中发送一批多个文档。

data=data.frame(A=c(1,2),B=c(3,4))  
L=lapply(split(data,rownames(data)),as.list)  
names(L)=NULL  
dataJSON = toJSON(L)  
cat(dataJSON)  

这给出了以下结果:

[  
 {  
  "A":1,
  "B":3
 },
 {
  "A":2,
  "B":4
 }
]

然后

dbInsertDocument(rmongo.object=myRmongo.object, collection=myCollection, doc=dataJSON)

返回以下错误:

Error in ls(envir = envir, all.names = private) :  
invalid 'envir' argument

请注意,如果我更换

L = L[[1]

然后

cat(dataJSON)  

给出以下结果:

{  
 "A":1,
 "B":3
}

并且对 dbInsertDocument 的相同调用没有错误(并且数据确实已发送到数据库)

4

1 回答 1

0

有没有人弄清楚这一点?我真的想要一个更好的方法来做到这一点,但现在我只是在列表中循环(不理想)

data=data.frame(A=c(1,2),B=c(3,4))  
L=lapply(split(data,rownames(data)),as.list)  
names(L)=NULL  
for (i in 1:NROW(L)) {
    dataJSON = toJSON(L[[i]])  
    output <- dbInsertDocument(mongo, "test_data7", dataJSON)
}
于 2014-03-29T20:38:12.500 回答