Как отправить несколько документов с помощью 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)
}