2

http://docs.mongodb.org/manual/reference/method/db.collection.insert/の規則に従って、
RMongo::dbInsertDocument の 1 回の呼び出しで複数のドキュメントのバッチを送信しています。

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 に答える