Как отправить несколько документов с помощью RMongo

Я следую соглашениям от 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 работает без ошибок (и данные действительно отправляются в базу данных)

1 ответ

Кто-нибудь понял это? Я действительно хотел бы лучший способ сделать это, но сейчас я просто перебираю список (не идеально)

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)
}
Другие вопросы по тегам